假设以下UTC RFC 3339时间戳:
2012-09-30 12:12:12Z
在JavaScript中生成本地化Date
的好方法是什么?
我已经达到了以下令人费解的(但是有效的)解决方案,我不禁想到我错过了一些东西。
/**
* Accepts a string on the format YYYY-MM-DD HH:MM:SS
* and returns a localised Date
*/
DateUtils.localised_date_from = function (rfc_timestamp) {
var date_parts = rfc_timestamp.substring(0, 10).split("-"),
time_parts = rfc_timestamp.substring(10).split(":"),
year = parseInt(date_parts[0], 10),
month = parseInt(date_parts[1], 10) - 1,
date = parseInt(date_parts[2], 10),
hours = parseInt(time_parts[0], 10),
minutes = parseInt(time_parts[1], 10),
seconds = parseInt(time_parts[2], 10),
utc_timestamp = Date.UTC(year, month, date, hours, minutes, seconds);
return new Date(utc_timestamp);
};
修改:
Date.parse
应该是一个很好的起点,但在旧浏览器中不能与RFC3339一起使用,至少在new Date(Date.parse("2012-09-30 12:12:12Z"))
返回NaN
的IE8中不起作用。
答案 0 :(得分:3)
(后评论)
new Date(Date.parse("2012-09-30 12:12:12Z")).
给我:
Sun Sep 30 2012 07:12:12 GMT-0500 (Central Daylight Time)
修改强>
我找不到(快速谷歌)解析RFC 3339是否是ECMA脚本规范的一部分,所以不保证这是跨浏览器。在Chrome 22中为我工作。
如果遇到问题,可能值得查看http://www.datejs.com/