我正在尝试使用luxon使用时区生成新日期。这是我的代码:
var luxon = require('luxon');
luxon.Settings.defaultZoneName = 'UTC+4';
var date = luxon.DateTime.local();
console.log(date);
var now = new Date(date.ts);
console.log(now.toString());
这是控制台:
DateTime {
ts: 2018-09-13T13:09:45.333+04:00,
zone: UTC+4,
locale: en-US }
Thu Sep 13 2018 11:09:45 GMT+0200 (CEST)
但是如果我尝试像这样访问ts
属性
var date = luxon.DateTime.local();
console.log(date.ts); // here
var now = new Date(date.ts);
console.log(now.toString());
我在控制台中得到这个:
1536830052009
Thu Sep 13 2018 11:14:12 GMT+0200 (CEST)
那是为什么?它在后台执行某种数学运算吗?事实证明,这个date.ts
只是在忽略我的时区。我该如何解决?
答案 0 :(得分:1)
第一个1536830052009
,这是您的时间(以毫秒为单位),
new Date(1536830052009)
// output Thu Sep 13 2018 11:14:12 GMT+0200 (CEST)
您可能希望使用getTimezoneOffset()
以分钟为单位返回UTC时间与本地时间之间的时差
许多人使用moment.js来玩Date,我知道这不是您的问题,但是也许您可以找到一些有用的东西
答案 1 :(得分:0)
ts
不是公共财产,您不应使用它。卢森堡(Luxon)会采取各种技巧来使数学正确无误。如果需要时间戳,请使用date.toMillis()
。如果您想要一个JS日期,请使用date.toJSDate()
。
另外两个重要的知识: