亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在JavaScript中獲取UTC時間戳?

如何在JavaScript中獲取UTC時間戳?

神不在的星期二 2019-08-02 16:09:22
如何在JavaScript中獲取UTC時間戳?在編寫Web應用程序時,將(服務器端)所有日期時間存儲在數據庫中作為UTC時間戳是有意義的。當我發現你無法在JavaScript中進行時區操作時,我感到非常驚訝。我稍微擴展了Date對象。這個功能有意義嗎?基本上,每次我向服務器發送任何內容時,它都將是使用此功能格式化的時間戳...你能看到這里有什么重大問題嗎?或者從不同角度解決問題?Date.prototype.getUTCTime = function(){    return new Date(     this.getUTCFullYear(),     this.getUTCMonth(),     this.getUTCDate(),     this.getUTCHours(),     this.getUTCMinutes(),      this.getUTCSeconds()   ).getTime(); }這對我來說似乎有點令人費解。而且我對表現也不太確定。
查看完整描述

3 回答

?
波斯汪

TA貢獻1811條經驗 獲得超4個贊

以這種方式構造的日期使用本地時區,使構造日期不正確。設置某個日期對象的時區是從包含時區的日期字符串構造它。(我在使用較舊的Android瀏覽器時遇到了問題。)


請注意,getTime()返回毫秒,而不是普通秒。


對于UTC / Unix時間戳,以下內容應該足夠:


Math.floor((new Date()).getTime() / 1000)

它會將當前時區偏移量計入結果。對于字符串表示,David Ellis的回答是有效的。


澄清:


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()返回星期幾。


查看完整回答
反對 回復 2019-08-02
?
米脂

TA貢獻1836條經驗 獲得超3個贊

你也可以利用getTimezoneOffset和getTime來做到這一點,

x = new Date()var UTCseconds = (x.getTime() + x.getTimezoneOffset()*60*1000)/1000;console.log("UTCseconds", UTCseconds)


查看完整回答
反對 回復 2019-08-02
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

是的,你不需要做那么多; 假設我理解正確,你只需要這個toUTCString方法


var UTCstring = (new Date()).toUTCString(); console.log('UTCstring', UTCstring);

但是,請記住,您獲得的日期值取決于客戶端計算機的時鐘,而不是您的服務器。如果您需要這些日期的精確值(例如,當相對于另一個用戶的操作執行此操作或該操作時正確排序),您無論如何都不能依賴客戶端日期庫,并且您需要計算根據客戶與您聯系的時間來確定服務器端的日期。

基本上也要記住,客戶端基本上可以修改所有客戶端代碼并返回惡意值,只能保證服務器端的代碼 - 將客戶端視為可能的攻擊者。


查看完整回答
反對 回復 2019-08-02
  • 3 回答
  • 0 關注
  • 5458 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號