How do you convert Milliseconds into a Javascript UTC date?

前端 未结 3 1952
不知归路
不知归路 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"
    

提交回复
热议问题