2013-08-31 481 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