不使用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日期时,它是正确的。
答案 0 :(得分:1)
Date对象的内部表示是一个数字,表示自1970-01-01 00:00:00 UTC以来经过的毫秒数,而不考虑闰秒。 Date对象本身没有存储时区或字符串格式。
有些库可以实现这一目标。他们使用JavaScript实现标准的Olson / IANA时区数据库。如果您在Web浏览器中运行,这会产生一些开销,因为如果您想要整个数据库,数据库可能会变得有点大。幸运的是,许多这些库允许您有选择地选择要支持的区域,使数据大小更加可口。
我知道有这样的库:
如果您可以限制使用现代Web浏览器,现在可以在没有任何特殊库的情况下执行以下操作:
new Date().toLocaleString("en-US", {timeZone: "America/New_York"})
来源:How to initialize javascript date to a particular timezone