Javascript 如何正确处理来自不同时区的日期?
我收到的日期格式为:Javascript 如何正确处理来自不同时区的日期?,javascript,date,momentjs,Javascript,Date,Momentjs,我收到的日期格式为:'MM/DD/YY HH:MM',我可以知道日期来自哪个时区。我正试图借助“时刻时区”将它们转换为标准的Javascript UTC日期,以根据该时区 这是我正在尝试的一个例子: var startTime = '12/03/15 14:00' var zoneOffset = moment(startTime, 'MM/DD/YY HH:mmZ').tz('America/Chicago').format().substring(19); var tzAdjusted =
'MM/DD/YY HH:MM'
,我可以知道日期来自哪个时区。我正试图借助“时刻时区”将它们转换为标准的Javascript UTC日期,以根据该时区
这是我正在尝试的一个例子:
var startTime = '12/03/15 14:00'
var zoneOffset = moment(startTime, 'MM/DD/YY HH:mmZ').tz('America/Chicago').format().substring(19);
var tzAdjusted = moment(startTime + zoneOffset, 'MM/DD/YY HH:mmZ');
var date = tzAdjusted.toISOString();
然后,我试着测试我的逻辑:
describe('Timezone conversions', function () {
it('Should properly convert timezones despite of running environment', function (done) {
var startTime = '12/03/15 14:00'
var zoneOffset = moment(startTime, 'MM/DD/YY HH:mmZ').tz('America/Chicago').format().substring(19);
var offset = moment(startTime + zoneOffset, 'MM/DD/YY HH:mmZ').format();
offset.slice(-6).should.equal('-06:00');
done();
})
});
因为我在墨西哥运行这个程序,它与芝加哥的时区偏移量相同,所以运行起来很好,但是如果我在运行之前将时区设置为UTC(export TZ='UTC'
),什么会失败呢
什么是正确的做法?就我个人而言,我试图通过将所有日期和时间保存为Posix时间戳(自1970年1月1日格林尼治标准时间以来经过的秒数)来避免这个问题。您可以非常快速地获取当前时间戳,如下所示:
var the_time_right_now = Date.now();
就这样。Date对象附带了各种各样的方法,可以帮助您根据时区等转换时间。很抱歉,您的答案没有回答任何问题。从我在问题中介绍的问题场景来看,您的回答保持不变。