ホームページ  >  に質問  >  本文

JavaScript で ISO 8601 を使用してタイムゾーン オフセットを含む日付をフォーマットするにはどうすればよいですか?

目標: 現地時間 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粉054616867P粉054616867228日前720

全員に返信(2)返信します

  • P粉842215006

    P粉8422150062024-03-26 13:16:45

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

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

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

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

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

    リーリー

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

    返事
    0
  • P粉545956597

    P粉5459565972024-03-26 12:26:52

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

    リーリー

    返事
    0
  • キャンセル返事