タイムゾーン付きで日付を ISO 形式に変換する

JavaScriptJavaScriptBeginner
オンラインで実践に進む

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、タイムゾーンオフセット付きの拡張 ISO 形式(ISO 8601)に日付を変換する方法を学びます。タイムゾーンオフセットを取得して逆転させるために、Date.prototype.getTimezoneOffset() メソッドを使用します。次に、渡された任意の数値を整数に正規化し、String.prototype.padStart() を使用して 2 桁にパディングするためのヘルパー関数を定義します。最後に、Date プロトタイプの組み込みメソッドを使用して、タイムゾーンオフセット付きの ISO 8601 文字列を作成します。この実験が終了するとき、JavaScript で日付を操作する方法をより深く理解しているでしょう。

タイムゾーン付きで日付を ISO 形式に変換する

日付を拡張 ISO 形式(ISO 8601)に変換し、タイムゾーンオフセットを含めるには、次の手順に従います。

  1. ターミナル/SSH を開き、コーディングを開始するために node を入力します。
  2. Date.prototype.getTimezoneOffset() を使用してタイムゾーンオフセットを取得し、それを逆転させます。その符号を diff に格納します。
  3. ヘルパー関数 pad() を定義します。これは、Math.floor()Math.abs() を使用して渡された任意の数値を整数に正規化し、String.prototype.padStart() を使用してそれを 2 桁にパディングします。
  4. pad()Date プロトタイプの組み込みメソッドを使用して、タイムゾーンオフセット付きの ISO 8601 文字列を作成します。

次のコードを使用できます。

const toISOStringWithTimezone = (date) => {
  const tzOffset = -date.getTimezoneOffset();
  const diff = tzOffset >= 0 ? "+" : "-";
  const pad = (n) => `${Math.floor(Math.abs(n))}`.padStart(2, "0");
  return (
    date.getFullYear() +
    "-" +
    pad(date.getMonth() + 1) +
    "-" +
    pad(date.getDate()) +
    "T" +
    pad(date.getHours()) +
    ":" +
    pad(date.getMinutes()) +
    ":" +
    pad(date.getSeconds()) +
    diff +
    pad(tzOffset / 60) +
    ":" +
    pad(tzOffset % 60)
  );
};

toISOStringWithTimezone() 関数に new Date() オブジェクトを引数として渡して、タイムゾーンオフセット付きの ISO 形式の日付を取得します。たとえば:

toISOStringWithTimezone(new Date()); // '2020-10-06T20:43:33-04:00'

まとめ

おめでとうございます!あなたは「タイムゾーン付きで日付を ISO 形式に変換する」実験を完了しました。あなたの技術を向上させるために、LabEx でさらに多くの実験を行って練習することができます。