【问题标题】:How do I set up timezone with 'new Date()' function in javascript? [duplicate]如何在 javascript 中使用“new Date()”函数设置时区? [复制]
【发布时间】:2017-10-15 04:46:54
【问题描述】:

这里我想采用时区“美国/圣地亚哥”... 但我得到“无效日期”结果,为什么?

请记住,我只想从“new Date ()”函数中检索时间数据,而不是从 Javascript 库中

请记住,我不想自动占用客户时间,我想占用“美国/圣地亚哥”时区,但我来自印度尼西亚

不是'getTimezoneOffset'函数,而是使用'new Date()'函数,我也知道'getTimezoneOffset'函数,但是这个函数会根据哪个用户在哪个时区自动获取时区。

function showTheTime() {
  var da_te = new Date('America/Santiago'); 
  document.getElementById("result").innerHTML = da_te;
}
showTheTime();
<p id="result"></p>

【问题讨论】:

  • America/Santiago 不是Date
  • 无法将时区设置为Date。 Javascript Date 提供了一个方法setTimezoneOffset 来获取系统时区,但是没有setTimezoneOffset
  • “但是我得到'无效日期'的结果,为什么?” - 因为你在编造东西,并且出于某种莫名其妙的原因期望它会起作用。 new Date('America/Santiago') 毫无意义。
  • @suish,我认为这只会自动生成时间,我说我想在“美国/圣地亚哥”时区生成时间,但我来自印度尼西亚
  • 好问题,我也想问这样的问题....也许其他人知道更多:)

标签: javascript date time timezone


【解决方案1】:

无法设置内置Date 对象的时区。它的时区始终是本地时区。

但是,moment.js 的 Moment Timezone 插件将允许您将时刻更改为特定时区。

例子:

function showTheTime() {
    var da_te = moment().tz('America/Santiago'); 
    document.getElementById("result").textContent = da_te.format('d/M/YY h:mma');
    console.log(da_te.valueOf());
}

showTheTime();
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data.min.js"></script>
<p id="result"></p>

【讨论】:

  • 但是通过使用'MomentJS'我不能使用函数'getTime()'
  • @Firmansyah .getTime() 的 MomentJS 等价物是 .valueOf()(更新后的答案)。
  • 内置日期是 UTC,它们使用主机偏移量来解释和生成“本地”值。
猜你喜欢
  • 2013-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 1970-01-01
  • 2014-11-26
  • 2021-12-06
相关资源
最近更新 更多