【问题标题】:JavaScript how to convert Europe/Berlin timezone to local timezone dateJavaScript如何将欧洲/柏林时区转换为本地时区日期
【发布时间】:2020-05-24 07:37:10
【问题描述】:

我有我的笔记模块,它显示用户所做的带有日期和时间的笔记, 使用我的 API 调用,我收到以下日期

2020-02-08 10:58:00 位于欧洲/柏林时区。

现在在客户端我想在本地时区显示它,即在印度它应该像

2020-02-08 03:28:00

我知道 moment js 可以做到,但我不知道如何使用它。那么有什么办法吗?使用核心 javascript 或 momentjs?

以下是我尝试使用时刻 js 获取时间字符串的内容

moment(new Date(targetDateString)).fromNow();

但这总是显示我的时间是五个小时,因为我的本地时区是 ITC,日期存储在欧洲/柏林

【问题讨论】:

标签: javascript date timezone momentjs


【解决方案1】:

您需要从他们的网站安装 moment-timezone('yarn add' 或其他),并将您的 moment 替换为 moment-timezone 中的 moment。

像这样:

import moment from 'moment-timezone';

Change timestamp from London To Berlin Time:
moment.tz(someTimeStamp, 'HHmmss','Europe/London').tz('Europe/Berlin').format('HH:mm:ss')

Change timestamp from UTC to browser's local time:
moment.tz(someTimeStamp, 'HHmmss','UTC').local().format('HH:mm:ss')

【讨论】:

    【解决方案2】:

    您可以使用moment-timezone

    var date = moment.tz("2020-02-08 10:58:00", "Europe/Berlin");
    var localDate = moment.tz("2020-02-08 10:58:00", "Europe/Berlin").local();
    
    console.log('Europe/Berlin', date.format());
    console.log('Local', localDate.format());
    <script src="https://momentjs.com/downloads/moment.js"></script>
    <script src="https://momentjs.com/downloads/moment-timezone-with-data-10-year-range.js"></script>

    【讨论】:

    • 当我运行您的示例时,两个日期都相同
    • tz 在我的 moment js 版本中不是一个函数,它有类似 zone 的东西,tz 已被弃用
    • 你必须设置 moment-timezone 这是一个单独的包。
    • moment-timezone-with-data-10-year-range.js:595 Uncaught TypeError: Cannot read property 'apply' of undefined any help?
    • moment-timezone-with-data-10-year-range.js:484 Moment Timezone 没有 2020-02-08 10:58:00 的数据。见
    猜你喜欢
    • 2013-09-12
    • 2019-06-22
    • 1970-01-01
    • 2014-05-19
    • 2021-05-03
    • 1970-01-01
    • 2021-09-16
    • 1970-01-01
    • 2021-04-21
    相关资源
    最近更新 更多