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

mar*_*rea 3 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();
Run Code Online (Sandbox Code Playgroud)

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

Uli*_*ses 7

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

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))

现在来自原始Date的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"


Com*_*rch 7

其实就像自制饼干一样简单,如果你有约会对象,就说:

var date_in_milliseconds = 1504640419000;
Run Code Online (Sandbox Code Playgroud)


然后您可以像这样初始化一个新日期:

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

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

human_readable_date.setUTCMilliseconds(date_in_milliseconds);
Run Code Online (Sandbox Code Playgroud)