How do you convert Milliseconds into a Javascript UTC date?

前端 未结 3 1948
不知归路
不知归路 2021-01-06 00:09

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

new Date(1446309338000) will equal a CST time (central standa

相关标签:
3条回答
  • 2021-01-06 00:16

    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"
    
    0 讨论(0)
  • 2021-01-06 00:25

    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.

    0 讨论(0)
  • 2021-01-06 00:34

    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);
    
    0 讨论(0)
提交回复
热议问题