目標: 現地時間
と UTC 時間オフセット
を見つけて、次の形式で URL を構築します。
URL の例:/Actions/Sleep?duration=2002-10-10T12:00:00−05:00
この形式は W3C の推奨事項に基づいています。ドキュメントには次のように書かれています:
例: 2002-10-10T12:00:00−05:00 (2002 年 10 月 10 日正午、 中部夏時間と東部標準時) 2002-10-10T12:00:00Z より 5 時間後の 2002-10-10T17:00:00Z に相当します。
したがって、私の理解では、new Date()
を介して現地時間を検索し、getTimezoneOffset()
関数を使用して差を計算し、それを末尾に追加する必要があります。文字列 。
format
を使用して現地時間を取得します
UTC 時間オフセットの取得
リーリーURL の構築 (時間部分のみ)
リーリー上記の出力は、現地時間が 2013 年 7 月 2 日の午前 9 時であることを意味します。これは UTC と 7 時間異なります (UTC は現地時間より 7 時間進んでいます)
ここまでは機能しているように見えますが、getTimezoneOffset()
が負の値 (例: -120) を返したらどうなるでしょうか?
W3C ドキュメントからは理解できないため、この場合の形式はどのようになるべきなのか疑問に思っています。
getTimezoneOffset()
参照する仕様で必要とされる形式の反対の符号を返します。この形式は、ISO8601、より正確には RFC3339 とも呼ばれます。
この形式では、UTC は
Z
で表され、他のすべての形式は UTC からのオフセットで表されます。意味はJavaScriptと同じですが、減算の順序が逆になるため、結果の符号が逆になります。さらに、ローカルの
Date
オブジェクトにはformat
という名前のメソッドがないため、この目的でライブラリを使用しない限り、#1 の関数は失敗します。 このドキュメントを参照してください。この形式を直接操作できるライブラリを探している場合は、moment.js を試してみることをお勧めします。実際、これはデフォルトの形式なので、次のようにするだけです:
リーリーこれは十分にテストされたクロスブラウザ ソリューションであり、他にも多くの便利な機能があります。
これは、JS 日付をフォーマットする単純なヘルパー関数です。