我有一个系统返回一个JSON对象,该对象包含字符串格式的日期。
这些日期的格式为“格林威治标准时间2012-10-19 06:05:38”(不...我就这样坚持了)
所以我需要把它变成一个日期对象(d),准备输出为d.toLocaleDateString()
在Chrome中,只需将字符串传递给新日期即可完美运行(糟糕的糟糕Chrome - 让Eric懒惰),但当然在FF和IE中失败
我可以通过拆分字符串来解决这个问题,但它并不漂亮,而且我还没想到要处理GMT的偏移量。
必须有更优雅的方式......?
我相信这里有人可以在一行中完成。
答案 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]);