簡體   English   中英

時間戳中的錯誤日期

[英]Wrong date from timestamp

我有一個自己無法解決的問題。

這是從我的網站數據庫中獲取的時間戳 1308085200。 它代表 2011-06-15 12:00:00

這是 javascript 代碼,我用它來“獲取”人類可讀格式的日期。

var date    = new Date(1308085200 * 1000);
var year    = date.getFullYear();
var month   = date.getMonth();
var day     = date.getDate();
var hour    = date.getUTCHours();
var minute  = date.getUTCMinutes();
var seconds = date.getUTCSeconds();

問題是我得到錯誤的結果。 例如上面的代碼顯示 2011-5-15 21:0:0 而不是 2011-06-15 12:00:00

我做錯了什么以及如何解決?

JavaScript 的Date::getMonth()從 0 到 11 返回從零開始的 integer,這就是為什么您的日期顯示為 5 月而不是 6 月的原因。

https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/getMonth

更新

至於時間部分,這就是我得到的(AEST)

var d = new Date(1308085200000); // Wed Jun 15 07:00:00 GMT+1000 (EST)
d.toUTCString() // Tue, 14 Jun 2011 21:00:00 GMT
d.getUTCFullYear() // 2011
d.getUTCMonth() // 5
d.getUTCDate() // 14
d.getUTCHours() // 21
d.getUTCMinutes() // 0
d.getUTCSeconds() // 0

看起來你的時間戳實際上不是你想象的那樣。

好吧,JavaScript 的 getMonth() function 很爛,一月份從 0 開始。 你必須添加一個。

也許您想使用date js ,因為它解決了其中一些問題。

.日期和時間可能因您所在的時區而異。這就是為什么在我的區域 (GMT+2000) new Date(1308085200*1000)顯示 ) 查看此參考資料,了解您一直想了解的有關 javascript 中日期的所有信息

關於格式(前導零等),也許這個 jsfiddle可以幫助你?

嘗試這個:

 function timeConverter(createdAt) {
  var date = new Date(createdAt);
  date.toUTCString()
  var year = date.getUTCFullYear();
  var month = date.getUTCMonth()+1;
  var day = date.getUTCDate();
  return day+"-"+month+"-"+year;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM