Javascript日期字符串转换

时间:2012-10-31 02:54:04

标签: javascript date casting

我有一个系统返回一个JSON对象,该对象包含字符串格式的日期。

这些日期的格式为“格林威治标准时间2012-10-19 06:05:38”(不...我就这样坚持了)

所以我需要把它变成一个日期对象(d),准备输出为d.toLocaleDateString()

在Chrome中,只需将字符串传递给新日期即可完美运行(糟糕的糟糕Chrome - 让Eric懒惰),但当然在FF和IE中失败

我可以通过拆分字符串来解决这个问题,但它并不漂亮,而且我还没想到要处理GMT的偏移量。

必须有更优雅的方式......?

我相信这里有人可以在一行中完成。

4 个答案:

答案 0 :(得分:2)

如果我是你,并且可以访问收集该信息(并输出它)的服务器端脚本,我会将日期转换为unix时间戳,然后使用Date构造函数轻松进行Javascript处理。

编辑:如果您使用的是PHP,可以使用strtotime()函数将字符串日期转换为数字unix时间戳。

答案 1 :(得分:2)

如果您知道确切的格式,可以使用Moment.js这样的库:Documentation for Moment.js

解析:

var dateString = "2012-10-19 06:05:38 GMT".replace(" GMT", "");
var date = moment(dateString, "YYYY-MM-DD HH:mm:ss");

答案 2 :(得分:2)

这不是一个单行,但如果您知道所有日期都是GMT,那么以下内容应该有效:

function parseDate(dateString) {
    // [y, m, d, hr, min, sec]
    var parts = dateString.match(/\d+/g);

    // Months are 0-indexed
    parts[1] -= 1;

    return new Date(Date.UTC.apply(Date, parts));
}

答案 3 :(得分:0)

您可以手动解析dateString,并完全传递Date of Date构造函数:https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date

   var dateString = "2012-10-19 06:05:38 GMT".split(" "),
       date = dateString[0].split("-"),
       time = dateString[1].split(":");

   var dateObj = new Date(date[0],date[1]-1,date[2],time[0],time[1],time[2]);