[解決済み] JavaScriptでUTCタイムスタンプを取得するには?
質問
Webアプリケーションを書くときに、(サーバー側で)保存することは意味があります。 すべて UTCタイムスタンプとしてDBに保存されます。
JavaScriptでタイムゾーンを操作することは、ネイティブではあまりできないことに気づいたときは驚きました。
Dateオブジェクトを少し拡張してみました。この機能は意味があるのでしょうか?基本的に、私が何かをサーバーに送るときは、毎回この関数でフォーマットされたタイムスタンプになるんだ...。
何か大きな問題はないでしょうか?あるいは、別の角度からの解決策があるでしょうか?
Date.prototype.getUTCTime = function(){
return new Date(
this.getUTCFullYear(),
this.getUTCMonth(),
this.getUTCDate(),
this.getUTCHours(),
this.getUTCMinutes(),
this.getUTCSeconds()
).getTime();
}
ただ、ちょっと複雑な感じがします。それに、パフォーマンスについてもあまり自信がありません。
解決方法は?
-
この方法で作成された日付は、ローカルのタイムゾーンを使用するため、作成された日付が不正確になります。ある日付オブジェクトのタイムゾーンを設定するには、タイムゾーンを含む日付文字列からそれを構築する必要があります。(古いAndroidのブラウザでは、これがうまくいかないことがありました)。
-
注意点
getTime()
は秒ではなくミリ秒を返します。
UTC/Unixタイムスタンプの場合、以下のようにすれば十分でしょう。
Math.floor((new Date()).getTime() / 1000)
現在のタイムゾーンオフセットを結果に織り込みます。文字列表現の場合。 デビッド・エリス という答えが返ってきます。
明確にするため。
new Date(Y, M, D, h, m, s)
その入力は、次のように扱われます。 ローカルタイム . もし UTC時間 を渡すと、結果が異なります。観察してみてください(私は今、GMT +02:00で、07:50です)。
> var d1 = new Date();
> d1.toUTCString();
"Sun, 18 Mar 2012 05:50:34 GMT" // two hours less than my local time
> Math.floor(d1.getTime()/ 1000)
1332049834
> var d2 = new Date( d1.getUTCFullYear(), d1.getUTCMonth(), d1.getUTCDate(), d1.getUTCHours(), d1.getUTCMinutes(), d1.getUTCSeconds() );
> d2.toUTCString();
"Sun, 18 Mar 2012 03:50:34 GMT" // four hours less than my local time, and two hours less than the original time - because my GMT+2 input was interpreted as GMT+0!
> Math.floor(d2.getTime()/ 1000)
1332042634
また、以下のことに注意してください。
getUTCDate()
は代用できません。
getUTCDay()
. これは
getUTCDate()
は以下を返します。
その月の日
;一方
getUTCDay()
リターン
曜日
.
関連
-
JavaScriptの配列共通メソッド解説
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] JavaScriptでメールアドレスを検証するのに最適な方法は何ですか?
-
[解決済み] JavaScriptでタイムスタンプを取得する方法は?
-
[解決済み] JavaScriptで現在のURLを取得する?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
Vue Element-uiは、アイコンを追加するためのツリーコントロールノードを詳細に実装しています。
-
JavaScriptの配列共通メソッド解説
-
vueにおけるfilterの適用シーンについて解説します。
-
vueのプロジェクトでモックを使用する方法を知っていますか?
-
Vueのイベント処理とイベントモディファイアの解説
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】React - TypeError: 未定義のプロパティ 'props' を読み取ることができない。
-
[解決済み】JavaScriptでインラインIF文の書き方は?
-
[解決済み】 env: node: macにそのようなファイルやディレクトリはありません
-
jq は html ページとデータを動的に分割する。