2016-05-11 15 views
1

OData v4形式の日付/時刻を返すWebサービスを使用しています。そのフォーマットはyyyy-MM-ddTHH:mm:ss.fffZのようになります。つまり、現在の時刻は「2016-05-11T03:08:00Z」と返されます。JavaScriptの日付/時刻形式の変換

クライアント側のJavaScriptでこの日付を受け取っています。私はMoment.jsライブラリを使用して日付をフォーマットしようとしています。私の理解から、その図書館はISO 8601 formatted stringを探します。

私の質問は、ISO 8601フォーマットの文字列に変換するOData v4文字列をどのように変換するのですか?または、OData v4の文字列をmomentオブジェクトにロードするにはどうすればよいですか?私の最大の問題はタイムゾーンと思われる。例えば:私は

2016-06-01T00:00:00Z 

を持っている場合、私は

05/31/2016 

しかし、私が期待されていた06-01-2016

感謝を取得

moment('2016-06-01T00:00:00Z').format('MM/DD/YYYY') 

使用!

+0

:良い測定のためにhttp://momentjs.com/timezone/docs/#/using-timezones/guessing-user-timezone/

あなたはUTCとしてその日付を解釈し、UTCとして表示したい場合、あなたはUTC機能を使用することができますか? – Wainage

答えて

2

あなたがやろうとしているすべてのローカルタイムとしてこのUTCの日付を解釈している場合は、モーメントのタイムゾーンに持参する必要はありません。ちょうどzトークンを無視してください。

moment('2016-06-01T00:00:00Z', 'YYYY-MM-DDTHH:mm:ss').format() 
"2016-06-01T00:00:00-05:00" //interpreted as -5 because my browser is central 

Intl.DateTimeFormat()は非常に限られたブラウザのサポートを持っていることに注意してください:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DateTimeFormat/resolvedOptions

あなたには、いくつかの目的のために、ブラウザからタイムゾーン情報を必要がある場合(あなただけを意味する場合は、これを必要としないことに注意してくださいブラウザの現地時間)、moment.tz.guess()を使用できます。これはインターナショナルAPIが存在する場合はそれを使用し、そうでない場合はヒューリスティックに戻ってタイムゾーンを推測します。あなたのタイムゾーンは何

moment.utc('2016-06-01T00:00:00Z').format() 
"2016-06-01T00:00:00Z" //z for UTC, but displayed with expected date and time 
1

タイムゾーンオフセットを追加することで手動で処理するか、別の依存関係を追加できる場合は、moment timezones jsを実行してください。

var tz = Intl.DateTimeFormat().resolvedOptions().timeZone; 
moment('2016-06-01T00:00:00Z').tz(tz).format('MM/DD/YYYY') 

タイムゾーンがわかっている場合は、タイムゾーン名を渡します。

moment('2016-06-01T00:00:00Z').tz('America/New_York').format('MM/DD/YYYY') 
+0

ニース。これまでIntlで行ったことはありませんでした。ウィル今。 – Wainage

関連する問題