2

次のUTCRFC3339タイムスタンプを想定しています。

2012-09-30 12:12:12Z

DateJavaScriptでローカライズされたものを生成する良い方法は何ですか?

私は次の複雑な(しかし機能している)解決策にたどり着きました、そして私は何かを逃したと思わずにはいられません。

/**
 * 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"))返すIE8では動作しません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スクリプト仕様の一部であるかどうかを(クイックグーグルで)見つけることができないため、これがクロスブラウザーであるという保証はありません。Chrome22で私のために働いた。

問題が発生した場合は、http: //www.datejs.com/を確認する価値があるかもしれません。

于 2012-10-31T18:46:45.713 に答える