2

假设以下 UTC RFC 3339 时间戳:

2012-09-30 12:12:12Z

Date什么是在 JavaScript中生成本地化的好方法?

我已经得出了以下令人费解的(但有效的)解决方案,我不禁认为我错过了一些东西。

/**
 * 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,至少在 IE8 中没有new Date(Date.parse("2012-09-30 12:12:12Z"))返回NaN

4

1 回答 1

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/

于 2012-10-31T18:46:45.713 回答