如何使用 moment-timezone 将 localTimeString 转换为 utcTimeString 并返回 localTimeString
How to transform a localTimeString to utcTimeString and back to localTimeString using moment-timezone
当我的应用程序中有人选择日期和时间并且我想以 UTC 时间存储该 DateTime 时,如何将存储的 DateTime 转换回用户的本地时区?
const moment = require('moment-timezone')
const myTimeZone = 'Europe/Copenhagen'
const nowUTC = moment.utc().format('YYYY-MM-DD HH:mm')
const someDanishTime = '2019-04-19 17:00'
const someDanishTimeAsUTC = moment.tz(someDanishTime,myTimeZone)
.utc()
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 15:00
const utcTimeAsSomeDanishTime = moment.tz(someDanishTimeAsUTC, myTimeZone)
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 15:00
// I need a way to transform someDanishTimeAsUTC back to someDanishTime
您可以使用 moment.utc
将您的输入解析为 UTC
By default, moment parses and displays in local time.
If you want to parse or display a moment in UTC, you can use moment.utc()
instead of moment()
.
然后你可以使用tz()
函数将其转换为给定区域
The moment#tz
mutator will change the time zone and update the offset.
这是一个活生生的例子:
const myTimeZone = 'Europe/Copenhagen'
const nowUTC = moment.utc().format('YYYY-MM-DD HH:mm')
const someDanishTime = '2019-04-19 17:00'
const someDanishTimeAsUTC = moment.tz(someDanishTime, myTimeZone)
.utc()
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 15:00
const utcTimeAsSomeDanishTime = moment.utc(someDanishTimeAsUTC).tz(myTimeZone)
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 17:00
console.log(someDanishTimeAsUTC);
console.log(utcTimeAsSomeDanishTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>
当我的应用程序中有人选择日期和时间并且我想以 UTC 时间存储该 DateTime 时,如何将存储的 DateTime 转换回用户的本地时区?
const moment = require('moment-timezone')
const myTimeZone = 'Europe/Copenhagen'
const nowUTC = moment.utc().format('YYYY-MM-DD HH:mm')
const someDanishTime = '2019-04-19 17:00'
const someDanishTimeAsUTC = moment.tz(someDanishTime,myTimeZone)
.utc()
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 15:00
const utcTimeAsSomeDanishTime = moment.tz(someDanishTimeAsUTC, myTimeZone)
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 15:00
// I need a way to transform someDanishTimeAsUTC back to someDanishTime
您可以使用 moment.utc
将您的输入解析为 UTC
By default, moment parses and displays in local time.
If you want to parse or display a moment in UTC, you can use
moment.utc()
instead ofmoment()
.
然后你可以使用tz()
函数将其转换为给定区域
The
moment#tz
mutator will change the time zone and update the offset.
这是一个活生生的例子:
const myTimeZone = 'Europe/Copenhagen'
const nowUTC = moment.utc().format('YYYY-MM-DD HH:mm')
const someDanishTime = '2019-04-19 17:00'
const someDanishTimeAsUTC = moment.tz(someDanishTime, myTimeZone)
.utc()
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 15:00
const utcTimeAsSomeDanishTime = moment.utc(someDanishTimeAsUTC).tz(myTimeZone)
.format('YYYY-MM-DD HH:mm') // returns 2019-04-19 17:00
console.log(someDanishTimeAsUTC);
console.log(utcTimeAsSomeDanishTime);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data-2012-2022.min.js"></script>