【问题标题】:How to transform a localTimeString to utcTimeString and back to localTimeString using moment-timezone如何使用时刻时区将 localTimeString 转换为 utc 时间字符串并返回到 localDate 字符串
【发布时间】:2019-09-09 18:21:41
【问题描述】:

当我的应用程序中有人选择了日期和时间并且我想将该 DateTime 存储为 UTC 时间时,如何将存储的 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

【问题讨论】:

    标签: momentjs moment-timezone


    【解决方案1】:

    您可以使用 moment.utc 将您的输入解析为 UTC

    默认情况下,moment 解析并显示为当地时间。

    如果要解析或显示 UTC 时刻,可以使用 moment.utc() 而不是 moment()

    然后您可以使用tz() 函数将其转换为给定区域

    moment#tz mutator 将更改时区并更新偏移量。

    这是一个现场样本:

    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>

    【讨论】:

    • 谢谢!这正是我所需要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 2012-08-04
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多