5

JavascriptのDateオブジェクトを使用して、文字列をミリ秒のタイムスタンプに解析しています。Date.parse()を使用しており、解析している文字列は次の形式です: "2012-07-06 12:59:36-0600"

Date.parseはChromeでうまく機能し、私が予想する正しいタイムスタンプに解析します。ただし、Date.parse()を介して文字列を実行すると、他のすべてのブラウザは「NaN」を返します。

Dateオブジェクトの実装がブラウザー固有であることは知っていますが、どのブラウザーでもこのタイプの文字列を解析できるjavascriptソリューションを見つけたいと思います。これを達成するためにJavascriptで他に何を使用できるかについての提案はありますか?

4

3 に答える 3

7

入力を有効なISO8601に変換します。

Date.parse("2012-07-06 12:59:36-0600".replace(' ', 'T'));

これはFirefoxでテストされました(そして動作します)。

ノート:

タイムゾーン指定子は、引数を適切に解釈するために日付文字列の解析中に使用されますが、返される値には影響しないことに注意してください。これは、常に1970年1月1日00:00:00UTCから表される時点までのミリ秒数です。引数によって。

于 2012-07-06T19:23:37.590 に答える
1

DateJSを試しましたか?別のライブラリを追加したくない場合もありますが、クロスブラウザの問題は解決します。

于 2012-07-06T19:17:52.943 に答える
1

形式に一貫性がある場合は、自分で解析できます。

var date = "2012-07-06 12:59:36-0600";
function parseDatetime(input) {
    var match = input.match(/(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})([-+]\d{4})/);
    match.shift(); // discard the "full match" index
    match[2]--;
    match[4] += parseInt(match[6],10);
    return new Date(match[0],match[1],match[2],match[3],match[4],match[5]);
}
于 2012-07-06T19:20:06.667 に答える