将 UTC 纪元转换为本地日期

2022-08-29 23:41:57

我现在已经为此斗争了一段时间。我正在尝试将 epoch 转换为日期对象。纪元以 UTC 格式发送给我。每当你通过一个纪元时,它都会假设它是局部纪元。我尝试创建一个UTC对象,然后使用它来调整到正确的时代,但似乎唯一有用的方法是字符串对我没有帮助。如果我将该字符串传递到一个新日期,它应该注意到它是UTC,但事实并非如此。new Date()setTime()toUTCString()

new Date( new Date().toUTCString() ).toLocaleString()

我的下一个尝试是尝试获得本地当前时代和UTC当前时代之间的差异,但我也无法得到它。

new Date( new Date().toUTCString() ).getTime() - new Date().getTime()

它只给了我非常小的差异,低于1000,以毫秒为单位。

有什么建议吗?


答案 1

我想我有一个更简单的解决方案 - 将初始日期设置为纪元并添加UTC单位。假设您以秒为单位存储了一个 UTC 纪元变量。怎么样.要将其转换为本地时区中的正确日期,请执行以下操作:1234567890

var utcSeconds = 1234567890;
var d = new Date(0); // The 0 there is the key, which sets the date to the epoch
d.setUTCSeconds(utcSeconds);

d现在是一个日期(在我的时区中)设置为Fri Feb 13 2009 18:31:30 GMT-0500 (EST)


答案 2

这很容易,只需要几毫秒,例如new Date()

new Date(1394104654000)
> Thu Mar 06 2014 06:17:34 GMT-0500 (EST)