获取UTC时间戳

bgc*_*ode 235 javascript time

如何在JavaScript中获取当前的UTC时间戳?我想这样做,所以我可以从客户端发送独立于他们的时区的时间戳.

Exp*_*Exc 218

new Date().getTime();
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅@James McMahon的回答.

  • 在我的角度应用程序中,它返回我当地时间,而不是UTC. (73认同)
  • 作为一个注释,`getTime()`返回一个Unix时间戳,调整为我的本地时间而不是UTC.即.`new Date(2016,0,1,0,0,0).getTime()`返回1451635200000,即2016年1月1日上午8点. (13认同)
  • 这不会获取 UTC 日期。我不明白这是如何被接受的。 (12认同)
  • Date.getTime()已经返回UTC时间戳.无需应用偏移量.请参阅下面的@james-mcmahon的回答. (6认同)
  • 感谢Aprillion的澄清!最后我理解为什么人们一直说`new Date().getTime()`或`Date.now()`是UTC但是当我尝试`console.log(new Date())`时,它会在我的时区显示时间.Date内部有UTC时间戳(毫秒)(w/c是`getTime()`或`now()`中返回的内容),它还有"你的时区"信息,因此当显示日期时,它会自动在正确的(您的)时区显示它.尝试`new Date().toUTCString()`以UTC格式查看.如果需要,可以在这里验证`Date.now()`的返回值:https://currentmillis.com/ (6认同)
  • @DouglasGaskell不,你在这里责怪错误的人.`getTime()`返回给定输入的正确UTC编号,是新的Date()`返回当地时区的时间 - 格林尼治标准时间-0800时区的午夜发生在上午8:00`UTC (5认同)
  • 这是正确答案!为什么?因为“1970 年 1 月 1 日,00:00:00.000 GMT”是一个不可移动的单一时间点,因此从该时间点开始计算,它不能大于或小于自此以来经过的秒数。因此,它始终采用 UTC。 (4认同)

Jam*_*hon 144

正如wizzard指出的那样,正确的方法是,

new Date().getTime();
Run Code Online (Sandbox Code Playgroud)

或者在Javascript 1.5下,只是

Date.now();
Run Code Online (Sandbox Code Playgroud)

文档中,

getTime方法返回的值是自1970年1月1日00:00:00 UTC以来的毫秒数.

如果你想制作一个没有毫秒的时间戳,你可以使用,

Math.floor(Date.now() / 1000);
Run Code Online (Sandbox Code Playgroud)

我想让这个答案,所以正确的方法更明显.

您可以将ExpExc和Narendra Yadala的结果与http://jsfiddle.net/JamesFM/bxEJd/上的方法进行比较,并通过http://www.unixtimestamp.com/date +%s在Unix终端上运行进行验证.

  • Date.now(); 返回我的时区的时间戳,而不是UTC + 0.所以我必须用新的Date()修改它.getTimezoneOffset(); (8认同)
  • @LukasLiesis如果你通过`console.log(new Date(timestamp))`来测试它,那么timezone是Date对象的属性,而不是时间戳 - 输入必须是自1970年1月1日UTC以来的毫秒数使Date对象在本地时区显示正确的时间...如果您调整数字,则时间将不正确 (4认同)

Nar*_*ala 61

您可以使用Date.UTC方法获取UTC时区的时间戳.

用法:

var now = new Date;
var utc_timestamp = Date.UTC(now.getUTCFullYear(),now.getUTCMonth(), now.getUTCDate() , 
      now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds(), now.getUTCMilliseconds());
Run Code Online (Sandbox Code Playgroud)

现场演示http://jsfiddle.net/naryad/uU7FH/1/

  • 对我来说,只有当我使用 getUTCMonth、getUTCDate 等时,这才有效。至少与“$ date -u +%s”相比 (3认同)
  • jsfiddle链接上的UTC时间戳不正确.实际上,您的"本地时间戳"是UTC时间戳,而您的"UTC时间戳"是时间UTC与您当地时间之间的秒数,这实际上没有意义.[Date.getTime](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTime)自动返回UTC时间戳. (3认同)
  • 不,它没有.阅读我链接到的[文档](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Date/getTime).查看你的[jsfiddle](http://jsfiddle.net/naryad/uU7FH/1/)时间戳,并将它们与当前的UTC时间戳[here](http://www.unixtimestamp.com/)进行比较(或使用` $ date -u +%s`如上所述).为什么不尝试将时间戳解析回日期并看看你提出了什么? (2认同)
  • 或者见鬼,看看这个问题:http://stackoverflow.com/questions/9756120/utc-timestamp-in-javascript (2认同)
  • 是的@wizzard 是对的,这个方法不会给你正确的 UTC 时间。 (2认同)

abu*_*uba 7

"......这与他们的时区无关"

var timezone =  d.getTimezoneOffset() // difference in minutes from GMT
Run Code Online (Sandbox Code Playgroud)