2013-08-31 156 views
5

我想發送UTC時間戳從我的JavaScript客戶端休息服務。我無法使用javascript創建類似"2013-08-30T19:52:28.226Z"的時間戳。在JavaScript中創建UTC時間戳

var rawDate = date.getUTCDate().toString(); 

我看到這個例子,但對我沒有幫助。 utc-time-stame-javascript

+0

你是不是指'new Date()'?它返回(完整)當前日期,與Date對象的所有屬性,在你的情況'(新Date())。toJSON()'應該工作 –

+0

因爲我的問題我想2013-08-31T9:4:51.859 Z in js –

+0

new Date()。toJSON()return 2013-08-31T09:04:51.863Z –

回答

8

您可以使用date.toJSON()

new Date().toJSON().toString() 
"2013-08-31T09:05:07.740Z" 

MDNMSDN

+0

看到我的願望結果2013-08-31T9:9:55.893Z –

+0

呵呵。 W3學校鏈接?這裏有一個更好的資源來討論函數:[MDN Date#toJSON](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toJSON?redirectlocale=en-US&redirectslug=JavaScript %2FReference%2FGlobal_Objects%2FDate%2FtoJSON) –

+0

W3學校的問題是什麼? –

0

1)獲取的日期。

var now = new Date(); 

2)轉換爲UTC格式,如下所示,對於reference

var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), 
        now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 

3)使用toJSON,獲取格式。

now_utc.toJSON() 

最後,

var now = new Date(); 
var now_utc = new Date(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds()); 
alert(now_utc.toJSON()); 

入住這JSFiddle

+0

Not utc time .. 2013-08-31T03:44:49.000Z –

1
function getUTCISODateString(d){ 
    function pad(n){return n<10 ? '0'+n : n}; 
    function threePad(n){return n<10 ? '00'+n : (n < 100 ? '0' + n : n)}; 
    return d.getUTCFullYear()+'-' 
      + pad(d.getUTCMonth()+1)+'-' 
      + pad(d.getUTCDate())+'T' 
      + pad(d.getUTCHours())+':' 
      + pad(d.getUTCMinutes())+':' 
      + pad(d.getUTCSeconds())+ '.' 
        + threePad(d.getUTCSeconds()) + 'Z'; 
} 

未測試:

+0

'new Date()。toJSON()' –

+0

@izuriel yes ofcourse if ie7 not targeted。 – sabithpocker

+0

如果IE7擔心支持,那麼我會引入一個類似[json2]的庫(https://github.com/douglascrockford/JSON-js)來將該功能填充到Date以及JSON.stringify '和'JSON.parse'。 –

0

這個庫可以爲你做。沒那麼大或者http://momentjs.com

moment().toISOString() 
// 2013-02-04T22:44:30.652Z 
+0

格式已關閉。他的要求要求在時區之前附加毫秒。 –

+0

@izuriel更新了答案,圖書館做了任何格式 –

+0

除非需要做更多的日期處理,否則在這裏加入「時間」(雖然是一個好的圖書館)是不必要的。正如Benoit Blanchon所回答的那樣,這可以通過'new Date()。toJSON()'本地實現,但使用JSON.stringify({post_date:new Date()});更簡單 - 在這種情況下它會自動調用。我應該早些時候提到這一點,但在更新中很好! –

0

我會建議延長日期()對象,並建立自己的字符串,那一刻它會爲你,但我不知道它在您需要的確切格式。剛寫了這個很快,但它應該是一個體面的起動鍋爐板。

Date.prototype.toLongUTCString = function() { 
    var self = this; 
    return self.getUTCFullYear() + '-' + (self.getUTCMonth() < 10 ? '0' : '') + 
      (self.getUTCMonth() +1)+ '-' + (self.getUTCDate() < 10 ? '0' : '') + 
      self.getUTCDate() + 'T' + self.getUTCHours() + ':' + self.getUTCMinutes() + 
      ':' + self.getUTCSeconds() + '.' + self.getUTCMilliseconds() + 'Z'; 
    }; 

查看更多:

http://jsfiddle.net/4Kczy/

/編輯:沒有人費心去問問瀏覽器需要哪些支持(咳嗽,IE)。

+0

這個功能可以添加到'Date'類以及完整的'JSON'解析/字符串構建與[json2]( https://github.com/douglascrockford/JSON-js)庫。順便說一句,通用的經驗法則是儘可能避免擴展核心類。 –

+0

@izuriel - 這取決於你在擴展什麼 - 例如這個函數永遠不會在覈心規範中實現(不同於map/filter/reduce可能會在未來某個時候在IE中實現)。至於json2 lib - 你並不總是需要一把電鋸來削減分支。乾杯! – konp