JavaScript で ISO 8601 を使用してタイムゾーン オフセットを含む日付をフォーマットするにはどうすればよいですか?
P粉054616867
P粉054616867 2024-03-25 15:40:11
0
2
747

目標: 現地時間 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() 関数を使用して差を計算し、それを末尾に追加する必要があります。文字列 。

  1. format を使用して現地時間を取得します

    リーリー
  2. UTC 時間オフセットの取得

    リーリー
  3. URL の構築 (時間部分のみ)

    リーリー

上記の出力は、現地時間が 2013 年 7 月 2 日の午前 9 時であることを意味します。これは UTC と 7 時間異なります (UTC は現地時間より 7 時間進んでいます)

ここまでは機能しているように見えますが、getTimezoneOffset() が負の値 (例: -120) を返したらどうなるでしょうか?

W3C ドキュメントからは理解できないため、この場合の形式はどのようになるべきなのか疑問に思っています。

P粉054616867
P粉054616867

全員に返信(2)
P粉842215006

getTimezoneOffset() 参照する仕様で必要とされる形式の反対の符号を返します。

この形式は、ISO8601、より正確には RFC3339 とも呼ばれます。

この形式では、UTC は Z で表され、他のすべての形式は UTC からのオフセットで表されます。意味はJavaScriptと同じですが、減算の順序が逆になるため、結果の符号が逆になります。

さらに、ローカルの Date オブジェクトには format という名前のメソッドがないため、この目的でライブラリを使用しない限り、#1 の関数は失敗します。 このドキュメントを参照してください。

この形式を直接操作できるライブラリを探している場合は、moment.js を試してみることをお勧めします。実際、これはデフォルトの形式なので、次のようにするだけです:

リーリー

これは十分にテストされたクロスブラウザ ソリューションであり、他にも多くの便利な機能があります。

いいねを押す +0
P粉545956597

これは、JS 日付をフォーマットする単純なヘルパー関数です。

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート