【问题标题】:Date format conversion in JavaScriptJavaScript 中的日期格式转换
【发布时间】:2012-03-09 18:44:20
【问题描述】:

我想知道转换这种格式的时间戳的最佳方法是什么 -

2012-02-18 14:28:32

到这种格式的日期表示 -

Saturday Feb 2012 14:28:32

非常感谢:)

【问题讨论】:

标签: javascript date datetime


【解决方案1】:

JavaScripts Date 对象缺少格式化方法。我会考虑使用像this one 这样的外部库。似乎它有你要找的东西。

【讨论】:

    【解决方案2】:

    Javascript 日期函数非常糟糕...您可以选择转换为 UTC http://www.w3schools.com/jsref/tryit.asp?filename=tryjsref_toutcstring

    但如果是我,我会研究 Datejs:http://www.datejs.com/ best javascript date api for me

    请看一下 Datejs 入门:http://www.datejs.com/2007/11/27/getting-started-with-datejs/

    【讨论】:

      【解决方案3】:

      试试这个博客,它有足够的日期格式:

      http://blog.stevenlevithan.com/archives/date-time-format

      【讨论】:

        【解决方案4】:

        您必须首先定义一个英文单词数组(Sunday、Monday、Feb、Mar 等):

        var daysOfWeek = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
            monthsOfYear = ["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];
        

        为了能够在分钟和秒的开头插入额外的0,为String原型定义一个填充函数:

        String.prototype.padLeft = function(padString,length){
            var toReturn = String(this);
            while(toReturn.length < length){
                toReturn = padString + toReturn;
            }
            return toReturn;
        }
        

        像这样格式化日期和时间:

        var time = new Date(), formattedDate, formattedTime, wholeThing;
        formattedDate = daysOfWeek[time.getDay()] + ", " + monthsOfYear[time.getMonth()] + " " + time.getDate() + ", " + time.getFullYear();
        formattedTime = time.getHours() + ":" + time.getMinutes().padLeft("0",2) + time.getSeconds().padLeft("0",2);
        

        你可以通过连接formattedDateformattedTime得到整个东西,如:

        wholeThing = formattedDate + " " + formattedTime;
        

        【讨论】:

          【解决方案5】:

          考虑使用datejs,这是石头!

          var mydate = Date.parse('2012-02-18 14:28:32');
          var result = mydate.toString('dddd MMM yyyy h:mm:ss');
          console.log(result);
          

          【讨论】:

          • ???未捕获的 RangeError:toString() 基数参数必须介于 :2:21 处 Number.toString () 的 2 到 36 之间
          • @PaoloBiavati 这意味着您在号码上调用toString,而不是日期:stackoverflow.com/questions/16527109/…(使用 datejs)。
          【解决方案6】:

          我建议使用外部 js 库来做到这一点。据我了解,Moment.js 是目前最好的日期时间转换库。

          在这种情况下,它在一行中完成了这项工作。只需在您的项目中添加 moment.js,然后执行

          var timestamp = '2012-02-18 14:28:32';
          var formattedTime = moment(timestamp).format('dddd MMM YYYY HH:mm:ss'); // Saturday Feb 2012 14:28:32
          

          【讨论】:

            猜你喜欢
            • 2013-07-18
            • 2012-06-05
            • 2017-10-12
            • 1970-01-01
            • 2012-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2010-11-03
            相关资源
            最近更新 更多