[解決済み] JavaScriptでタイムゾーンオフセットを含むISO 8601形式の日付を作成するには?
2022-05-13 19:55:41
質問
目標
を検索します。
local time
と
UTC time offset
であれば、以下のような形式で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
var local = new Date().format("yyyy-MM-ddThh:mm:ss"); // 2013-07-02T09:00:00
-
UTC時間オフセットを時間単位で取得する
var offset = local.getTimezoneOffset() / 60; // 7
-
構築URL(時間部分のみ)
var duration = local + "-" + offset + ":00"; // 2013-07-02T09:00:00-7:00
上記の出力は、私の現地時間が2013/07/02 9amで、UTCとの差が7時間であることを意味します(UTCは現地時間より7時間進んでいます)。
ここまではうまくいっているように見えますが、次のような場合はどうでしょうか。
getTimezoneOffset()
は-120のような負の値を返しますか?
W3Cのドキュメントを見ても分からないので、このような場合、どのような書式になるのか気になります。
どのように解決するのですか?
JSの日付をフォーマットしてくれる簡単なヘルパー関数を紹介します。
function toIsoString(date) {
var tzo = -date.getTimezoneOffset(),
dif = tzo >= 0 ? '+' : '-',
pad = function(num) {
return (num < 10 ? '0' : '') + num;
};
return date.getFullYear() +
'-' + pad(date.getMonth() + 1) +
'-' + pad(date.getDate()) +
'T' + pad(date.getHours()) +
':' + pad(date.getMinutes()) +
':' + pad(date.getSeconds()) +
dif + pad(Math.floor(Math.abs(tzo) / 60)) +
':' + pad(Math.abs(tzo) % 60);
}
var dt = new Date();
console.log(toIsoString(dt));
関連
-
[解決済み】(Google Map API) Geocodeは以下の理由で成功しませんでした。REQUEST_DENIED
-
フロントエンド非同期(アシンク)ソリューション(全ソリューション)
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
fetch ネットワークリクエストラッパーの説明例
-
Vueの要素ツリーコントロールに破線を追加する説明
-
JavaScriptの配列共通メソッド解説
-
[解決済み] Error : 未定義のプロパティ 'map' を読み取ることができません。
-
[解決済み】"フォームが接続されていないため、フォームの送信がキャンセルされました "というエラーの取得について
-
[解決済み】「X-Frame-Options」を「SAMEORIGIN」に設定したため、フレームでの表示を拒否された。
-
[解決済み】JavaScript TypeError: null のプロパティ 'style' を読み取ることができない
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
JavaScriptのgetElementById()メソッド入門
-
[解決済み] javascriptのtoISOString()はタイムゾーンオフセットを無視する [duplicate] 。