Convert UTC Epoch to local date

I have been fighting with this for a bit now. I'm trying to convert epoch to a date object. The epoch is sent to me in UTC. Whenever you pass new Date() an epoch, it assumes it's local epoch. I tried creating a UTC object, then using setTime() to adjust it to the proper epoch, but the only method that seems useful is toUTCString() and strings don't help me. If I pass that string into a new date, it should notice that it's UTC, but it doesn't.

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

My next attempt was to try to get the difference between local current epoch and UTC current epoch, but I wasn't able to get that either.

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

It's only giving me very small differences, under 1000, which is in milliseconds.

Any suggestions?


I think I have a simpler solution -- set the initial date to the epoch and add UTC units. Say you have a UTC epoch var stored in seconds. How about 1234567890 . To convert that to a proper date in the local time zone:

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 is now a date (in my time zone) set to Fri Feb 13 2009 18:31:30 GMT-0500 (EST)


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

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

而对于日志,我使用了Moment.js库,我仍然使用它进行格式化。

moment.utc(1234567890000).local()
>Fri Feb 13 2009 19:01:30 GMT-0430 (VET)
链接地址: http://www.djcxy.com/p/18488.html

上一篇: Pythonic的方式来创建一个长的多

下一篇: 将UTC Epoch转换为本地日期