我已经为此挣扎了一段时间。我正在尝试将epoch转换为日期对象。纪元以UTC格式发送给我。无论何时向new Date()传递一个epoch,它都假定它是本地epoch。我尝试创建一个UTC对象,然后使用setTime()将其调整为适当的epoch,但唯一有用的方法是toUTCString()和字符串对我没有帮助。如果我将这个字符串传递给一个新的日期,它应该注意到它是UTC,但它没有。

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

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

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

它只给了我非常小的差别,在1000以下,单位是毫秒。

有什么建议吗?


当前回答

我找到的最简单的解决方法是:

var timestamp = Date.now(), // returns milliseconds since epoch time
    normalisedTime = new Date(timestamp);

注意,在new Date(timestamp)语句的末尾没有* 1000,因为这个(至少对我来说!)似乎总是给出错误的日期,即给出的年份不是2019年而是51015年,所以请记住这一点。

其他回答

我找到的最简单的解决方法是:

var timestamp = Date.now(), // returns milliseconds since epoch time
    normalisedTime = new Date(timestamp);

注意,在new Date(timestamp)语句的末尾没有* 1000,因为这个(至少对我来说!)似乎总是给出错误的日期,即给出的年份不是2019年而是51015年,所以请记住这一点。

var myDate =新日期(您的纪元日期*1000);

来源:https://www.epochconverter.com/programming/#javascript

对于日志,我使用了Moment.js库,我是用它来格式化的。

moment.utc(1234567890000).local()
>Fri Feb 13 2009 19:01:30 GMT-0430 (VET)

这很简单,new Date()只需要几毫秒,例如:

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

EDIT

var utcDate = new Date(incomingUTCepoch);
var date = new Date();
date.setUTCDate(utcDate.getDate());
date.setUTCHours(utcDate.getHours());
date.setUTCMonth(utcDate.getMonth());
date.setUTCMinutes(utcDate.getMinutes());
date.setUTCSeconds(utcDate.getSeconds());
date.setUTCMilliseconds(utcDate.getMilliseconds());

编辑固定