How do you convert Milliseconds into a Javascript UTC date?

雨燕双飞 提交于 2019-12-20 01:50:14

问题


Given I have the number 1446309338000, how do I create a JavaScript UTC date?

new Date(1446309338000) will equal a CST time (central standard) or local time.
new Date(Date.UTC(year, month, day, hour, minute, second)) haven't got this info yet.

Does JavaScript change the time if I do this?

new Date(1446309338000).ISOString();

Is it creating a new CST date and then converting it to UTC? I really just need the string. I am taking it from a database (RowKey from a Azure Table storage database).


回答1:


If you have the milliseconds that's already the UTC date. Which basically means the universal time. Now based on those millis you can convert the Date object into a String of your like:

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"

Now, if for some reason (I can't see a valid reason, but just for the heck of it) you're looking for having a different amount of milliseconds that represent a different date but that would print the same in the local browser timezone, you can do this calculation:

new Date(1446309338000 - new Date(1446309338000).getTimezoneOffset() * 60 * 1000))

Now toString from original Date and toUTCString of this new Date would read the same up to the Timezone information, because of course they're not the same date!

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"



回答2:


It's actually as simple as homemade biscuits, If you have your date, say:

var date_in_milliseconds = 1504640419000;


You can then initialize a new date like this:

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

now, just add the milliseconds to the Epoch, and this will give us the desired date:

human_readable_date.setUTCMilliseconds(date_in_milliseconds);



回答3:


Well, if the date string is what you require, hope this helps:

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

As far as toISOString() is concerned, it returns string representation using ISO-8601 standard (the format is: YYYY-MM-DDTHH:mm:ss.sssZ).
toLocaleString() is human readable format with same result.



来源:https://stackoverflow.com/questions/33507289/how-do-you-convert-milliseconds-into-a-javascript-utc-date

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!