[解決済み] moment.js - UTCが間違った日付を表示する
質問
moment.js UTCはなぜいつも間違った日付を表示するのですか?例えば、クロームのデベロッパーコンソールから。
moment(('07-18-2013')).utc().format("YYYY-MM-DD").toString()
// or
moment.utc(new Date('07-18-2013')).format("YYYY-MM-DD").toString()
どちらも "2013-07-17" なぜ 17日 ではなく 18日 で渡されたものです。
しかし、momentjsをutcなしで使用すると。
moment(new Date('07-18-2013')).format("YYYY-MM-DD").toString()
戻る "2013-07-18" これは、moment.js UTCを使用するときに私が期待するものです。
これは、moment.jsのUTCを使用した場合、正しい日付を取得できないことを意味するのでしょうか?
解決方法は?
デフォルトでは、MomentJSはローカルタイムでパースします。日付文字列(時刻なし)だけが提供された場合、時刻のデフォルトは真夜中になります。
あなたのコードでは、ローカルの日付を作成し、それをUTCタイムゾーンに変換しています(実際には、それによってモーメントインスタンスが UTCモード そのため、フォーマットされたときに、(ローカルタイムに応じて)前方または後方にシフトされます。
ローカルタイムゾーンがUTC+N(Nは正の数)の場合、日付のみの文字列をパースすると、前の日付が取得されます。
以下に例を挙げて説明します(私のローカルタイムオフセットはサマータイム期間中はUTC+3です)。
>>> moment('07-18-2013', 'MM-DD-YYYY').utc().format("YYYY-MM-DD HH:mm")
"2013-07-17 21:00"
>>> moment('07-18-2013 12:00', 'MM-DD-YYYY HH:mm').utc().format("YYYY-MM-DD HH:mm")
"2013-07-18 09:00"
>>> Date()
"Thu Jul 25 2013 14:28:45 GMT+0300 (Jerusalem Daylight Time)"
日付-時刻文字列をUTCとして解釈してほしい場合は、それを明示する必要があります。
>>> moment(new Date('07-18-2013 UTC')).utc().format("YYYY-MM-DD HH:mm")
"2013-07-18 00:00"
または、マット・ジョンソン氏が回答で触れているように、(
そしておそらく
を使って、UTCの日付としてパースします。
moment.utc()
で、曖昧さを防ぐためにフォーマット文字列を第2引数として含めます。
>>> moment.utc('07-18-2013', 'MM-DD-YYYY').format("YYYY-MM-DD HH:mm")
"2013-07-18 00:00"
逆にUTCの日付をローカルの日付に変換するには
local()
メソッドを使用すると、次のようになります。
>>> moment.utc('07-18-2013', 'MM-DD-YYYY').local().format("YYYY-MM-DD HH:mm")
"2013-07-18 03:00"
関連
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】ETIMEDOUTエラーの対処方法は?
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] 2つの日付範囲が重なっているかどうかを判定する
-
[解決済み] オブジェクトの配列を日付のプロパティでソートする方法は?
-
[解決済み] Moment.jsで日付オブジェクトに変換する
-
[解決済み] UTCの日付時刻をローカルの日付時刻に変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】TypeError: 'undefined'はオブジェクトではありません。
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】コンソールがUnterminated JSX contentsエラーを投げる【終了しました
-
[解決済み】React、Uncaught ReferenceError。ReactDOMは定義されていません
-
[解決済み】SyntaxError: JSON の位置 1 に予期しないトークン o があります。
-
[解決済み】getElementByIdはnullを返す?[クローズド]
-
[解決済み】Vueのテンプレートまたはレンダー関数が定義されていない 私はどちらも使っていないのですが?
-
[解決済み】Uncaught ReferenceError。Firebase は定義されていません。
-
[解決済み】Babel NodeJS ES6: SyntaxError: 予期しないトークンのエクスポート
-
[解決済み] JavaScriptの日付をUTCに変換する方法を教えてください。