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

How do you convert Milliseconds into a Javascript UTC date?

鉴于我有号码 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 Table 存储数据库的 RowKey)。

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

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

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

如果你有毫秒,那已经是 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 和这个新日期的 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"

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

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

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

human_readable_date.setUTCMilliseconds(date_in_milliseconds);