你如何将毫秒转换为Javascript UTC日期?

时间:2015-11-03 19:18:47

标签: javascript azure-table-storage

鉴于我的号码为1446309338000,如何创建JavaScript UTC日期?

new Date(1446309338000)将等于CST时间(中央标准)或当地时间 new Date(Date.UTC(year, month, day, hour, minute, second))尚未获得此信息。

如果我这样做,JavaScript会改变时间吗?

new Date(1446309338000).ISOString();

是创建新的CST日期然后将其转换为UTC吗?我真的只需要字符串。我从数据库(Azure表存储数据库中的RowKey)中获取它。

3 个答案:

答案 0 :(得分:7)

如果您的毫秒数已经是UTC日期。这基本上意味着世界时。现在基于这些毫秒,您可以将Date对象转换为您喜欢的字符串:

new Date(1446309338000).toUTCString() // timezone free universal format
> "Sat, 31 Oct 2015 16:35:38 GMT"
new Date(1446309338000).toString() // browser local timezon string
> "Sat Oct 31 2015 09:35:38 GMT-0700 (PDT)"
new Date(1446309338000).toISOString() // ISO format of the UTC time
> "2015-10-31T16:35:38.000Z"

现在,如果由于某种原因(我看不出一个正当理由,但仅仅是因为它),你正在寻找具有不同日期的不同毫秒数但是会打印相同的在本地浏览器时区,你可以做这个计算:

new Date(1446309338000 - new Date(1446309338000).getTimezoneOffset() * 60 * 1000))

现在来自原始日期的toString和这个新Date的toUTCString将读取相同的时区信息,因为它们当然不是同一个日期!

new Date(1446309338000).toString()
> "Sat Oct 31 2015 09:35:38 GMT-0700 (PDT)"
new Date(1446309338000 - new Date(1446309338000).getTimezoneOffset() * 60 * 1000).toUTCString()
> "Sat, 31 Oct 2015 09:35:38 GMT"

答案 1 :(得分:3)

它实际上和自制饼干一样简单,如果你有约会,请说:

var date_in_milliseconds = 1504640419000;


然后,您可以初始化这样的新日期:

var human_readable_date = new Date(0); //Date(0) creates a date at the Epoch, so Wed Dec 31 1969

现在,只需将毫秒添加到Epoch,这将为我们提供所需的日期:

human_readable_date.setUTCMilliseconds(date_in_milliseconds);

答案 2 :(得分:1)

好吧,如果您需要日期字符串,希望这会有所帮助:

new Date(1446309338000).toLocaleString('en-US', {timeZone: 'UTC'})

toISOString()而言,它使用ISO-8601标准返回字符串表示(格式为:YYYY-MM-DDTHH:mm:ss.sssZ)。
toLocaleString()是人类可读的格式,结果相同。