1. ホーム
  2. javascript

[解決済み] Javascript での ISO 8601 の日付のパース

2023-06-16 02:43:30

質問

以下の構造を持つISO 8601の日付をjavascriptに変換するためのヘルプ/ヒントが必要です。

CCYY-MM-DDThh:mm:ssTZD

日付の書式をこのようにしたい。

January 28, 2011 - 7:30PM EST

このソリューションは、できるだけクリーンで最小限のものにしたいと思います。

どのように解決するのですか?

日付js は以下のようにパースできますので、試してみてはいかがでしょうか。

Date.parse('1997-07-16T19:20:15')           // ISO 8601 Formats
Date.parse('1997-07-16T19:20:30+01:00')     // ISO 8601 with Timezone offset

編集します。 Regexバージョン

x = "2011-01-28T19:30:00EST"

MM = ["January", "February","March","April","May","June","July","August","September","October","November", "December"]

xx = x.replace(
    /(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):\d{2}(\w{3})/,
    function($0,$1,$2,$3,$4,$5,$6){
        return MM[$2-1]+" "+$3+", "+$1+" - "+$4%12+":"+$5+(+$4>12?"PM":"AM")+" "+$6
    }
)

結果

January 28, 2011 - 7:30PM EST

編集2 タイムゾーンをESTに変更したら、次のようになりました。

x = "2011-01-28T19:30:00-05:00"

MM = {Jan:"January", Feb:"February", Mar:"March", Apr:"April", May:"May", Jun:"June", Jul:"July", Aug:"August", Sep:"September", Oct:"October", Nov:"November", Dec:"December"}

xx = String(new Date(x)).replace(
    /\w{3} (\w{3}) (\d{2}) (\d{4}) (\d{2}):(\d{2}):[^(]+\(([A-Z]{3})\)/,
    function($0,$1,$2,$3,$4,$5,$6){
        return MM[$1]+" "+$2+", "+$3+" - "+$4%12+":"+$5+(+$4>12?"PM":"AM")+" "+$6 
    }
)

戻る

January 28, 2011 - 7:30PM EST

基本的に

String(new Date(x))

戻る

Fri Jan 28 2011 19:30:00 GMT-0500 (EST)

正規表現部品は、上記の文字列を必要な形式に変換しているだけです。

January 28, 2011 - 7:30PM EST