[解決済み] javascriptのDateをJSONで文字列化し、タイムゾーンを保持する方法
2023-06-13 03:15:22
質問
私はユーザーによって作成される日付オブジェクトを持っていて、タイムゾーンはブラウザによって記入されます。
var date = new Date(2011, 05, 07, 04, 0, 0);
> Tue Jun 07 2011 04:00:00 GMT+1000 (E. Australia Standard Time)
しかし、文字列化すると、タイムゾーンが消えてしまいます。
JSON.stringify(date);
> "2011-06-06T18:00:00.000Z"
ブラウザのタイムゾーンを維持したままISO8601の文字列を取得する最善の方法は、moment.jsを利用して
moment.format()
を使用してコマンド全体をシリアライズする場合、もちろんそれはうまくいきません。
JSON.stringify
を内部で使っているもの(この場合はAngularJS)を介してコマンド全体をシリアライズしている場合は、もちろんうまくいきません。
var command = { time: date, contents: 'foo' };
$http.post('/Notes/Add', command);
完全を期すために、私のドメイン は はローカルタイムとオフセットの両方を必要とします。
どのように解決するのですか?
を含む何らかのオブジェクトがあると仮定します。
Date
:
var o = { d : new Date() };
を上書きすることができます。
toJSON
の関数をオーバーライドすることができます。
Date
のプロトタイプを作成します。 ここでは、moment.js を使って
moment
オブジェクトを作成し、次にmomentの
format
関数を使います。これはオフセットを含む ISO8601 拡張フォーマットを出力します。
Date.prototype.toJSON = function(){ return moment(this).format(); }
これで、オブジェクトをシリアライズしたときに、指定された日付の書式が使われるようになります。
var json = JSON.stringify(o); // '{"d":"2015-06-28T13:51:13-07:00"}'
もちろん、それは
すべて
Date
オブジェクトを指定します。 特定の日付オブジェクトのみの動作を変更したい場合は、その特定のオブジェクトの
toJSON
関数をこのようにオーバーライドします。
o.d.toJSON = function(){ return moment(this).format(); }
関連
-
[解決済み】JavaScriptで「無効な日付」のDateインスタンスを検出する
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] JavaScriptの日付の書式設定方法
-
[解決済み] JavaScriptで現在の日付を取得するには?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み] JavaScript のオブジェクトの配列を比較し、最小値/最大値を取得する
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptを使用してHTML要素に属性を追加/更新するには?
-
[解決済み] オブジェクトの配列からReactコンポーネントをレンダリングする
-
[解決済み] JavaScriptのtoString()関数をオーバーライドして、デバッグ用に意味のある出力を提供することは可能でしょうか?
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] $.ajax実行中にローディングイメージを表示する
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] Prototypeを使ってtextareaを自動サイズ調整するには?
-
[解決済み] jQueryを使用して、すべてのクリックイベントハンドラを削除するにはどうすればよいですか?
-
[解決済み] JSON StringifyはUTCのために日付の時間を変更する