【问题标题】:Momentjs how to get timezone time - not based on computer datetimeMomentjs如何获取时区时间 - 不基于计算机日期时间
【发布时间】:2019-07-26 20:07:18
【问题描述】:

我需要获取一个时区的时间而不是基于电脑时间,我不希望电脑或手机时间改变时时间改变。

我需要用一个区域来获取时间

我已经尝试了很多 stackoverflow 和其他可用的示例,但很难找到

        moment.tz.setDefault("Europe/London");
        var datetime = new Date(moment());
        document.getElementById('log').innerHTML =datetime;

上面的代码打印时间。当我手动更改手机时间时,它显示的是更改后的手机时间,而不是实际的时区时间。

假设我在伦敦,我的当地时间是 14:30,所以当我将手机时间更改为 15:30 时,我的区域时间也是 14:30,它应该显示实际区域时间 14:30 而不是 15:30

首先,这可能吗?如果是请帮忙

【问题讨论】:

  • 我认为问题在于日期,而不是时刻。为什么需要将其转换回 Date 对象才能将其添加到 HTML?
  • “当我把手机时间改成15:30”:你的意思是你要改手机上的时区吗?跨度>
  • 这是不可能可靠地做到的。您可以使用地理定位来确定时区,然后从那里计算出时间,但这很不可靠。
  • 我需要一个特定区域的时钟jsfiddle.net/w069c8ae/2
  • 但是当您执行moment()new Date() 时,您正在读取系统的时间。如果您不希望这样(因为设备时间错误),您应该指定完整的日期和时间信息并构建它。或者你应该在那里轮询一个时间服务器。

标签: javascript datetime momentjs


【解决方案1】:
const datetime = moment().tz("Europe/London").format('h:mm:ss a');
// change format as needed…

console.log(datetime);

document.getElementById('log').innerHTML = datetime;

确保您已加载必要的资源。

在这里提琴:https://jsfiddle.net/dusthaines/hg1fpwue/

【讨论】:

    猜你喜欢
    • 2016-03-12
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    • 2021-06-04
    • 1970-01-01
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多