在特定时区构建日期

时间:2018-01-19 10:49:37

标签: javascript date datetime

不使用moment.js,是否有办法在特定时区内构建日期。

例如,我有两个字符串:

var date = '2018-01-23';
var time = '12:00';

我可以这样构建日期:

var constructedDate = new Date(date.substring(0,4), date.substring(5,7)-1, date.substring(8,10), time.substring(0,2), time.substring(3,5));

提供输出:

  

1月23日星期二12:00:00 GMT + 00:00 2018

但是,我正在寻找特定时区的输出(例如+11:00)

  

1月23日星期二格林威治标准时间12:00:00 + 2018年11月1日

或者,有没有办法抵消日期-11小时,所以当我在我的应用程序中使用GMT日期时,它是正确的。

1 个答案:

答案 0 :(得分:1)

Date对象的内部表示是一个数字,表示自1970-01-01 00:00:00 UTC以来经过的毫秒数,而不考虑闰秒。 Date对象本身没有存储时区或字符串格式。

有些库可以实现这一目标。他们使用JavaScript实现标准的Olson / IANA时区数据库。如果您在Web浏览器中运行,这会产生一些开销,因为如果您想要整个数据库,数据库可能会变得有点大。幸运的是,许多这些库允许您有选择地选择要支持的区域,使数据大小更加可口。

我知道有这样的库:

  • 矩时区
  • JS​​-约达
  • BigEasy /时区
  • TimeZoneJS

如果您可以限制使用现代Web浏览器,现在可以在没有任何特殊库的情况下执行以下操作:

new Date().toLocaleString("en-US", {timeZone: "America/New_York"})

来源:How to initialize javascript date to a particular timezone