Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何正确处理来自不同时区的日期?_Javascript_Date_Momentjs - Fatal编程技术网

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对象附带了各种各样的方法,可以帮助您根据时区等转换时间。

很抱歉,您的答案没有回答任何问题。从我在问题中介绍的问题场景来看,您的回答保持不变。