繁体   English   中英

将JavaScript Date对象转换为其他时区

[英]Convert a JavaScript Date object to a different timezone

我有一个由用户手动设置的JavaScript Date对象。 问题在于,当在客户端上创建日期时,Date构造函数会根据客户端的时区来构建日期对象。

例如,我居住在CST时区,但是如果将PC设置为EST时间,则Date构造函数将构造一个不同的date对象。

问题是:

如何将日期对象转换为特定时区? 例如,一台客户机是EST时间,我需要将日期对象转换为CST时间。

更新

这是我到目前为止的JS

// returns local time in msecs given a UTC offset
Date.prototype.getLocalTime = function(offset) {
    var MSEC_HOUR = 3600000; // milliseconds in an hour
    var MSEC_MIN = 60000; // milliseconds in a minute

    // convert client sides local time
    var utc = this.getTime() + (this.getTimezoneOffset() * MSEC_MIN);
    return utc + (offset * MSEC_HOUR);
};

var offset = -6.0; // Central Standard Time UTC offset  
var date = form.getDate(); // get user date input   
var msecs = date.getLocalTime(offset);

// converted clients form date input to CST
var convertedDate = new Date(msecs);

时区总是一件棘手的事情。 您可以使用getUTCHours() ,它返回世界时,然后从那里去,也可以使用诸如momentjs之类的东西。

如果您想使用某个时区,则可能要选择UTC,看看它是如何制成的,而不是其他时区

Date.UTC(year, month[, day[, hour[, minute[, second[, millisecond]]]]])

自UTC开始以来将返回毫秒数,然后可以将其传递给

var date = new Date(Date.UTC(year, month, day, hour, min);

这可以使用moment.js完成

ConvertDate : function (dateTemp, timeZone) {
        //dateTemp(String) -> 2016-09-12 15:00:00.0 (UTC date)
        //timezone(String) -> -08:00
        var tempNow = moment(dateTemp);
        //create moment in current timeZone (without change in date)
        //offset -> 330 (IST)
        var dateToTimezone = tempNow.clone();
        dateToTimezone.utcOffset('UTC');
        //convert moment in UTC
        //offset -> 0
        dateToTimezone.add(tempNow.utcOffset() -dateToTimezone.utcOffset(), 'minutes');
        var revertTime = moment(dateToTimezone);
        //converted to user selected timeZone
        revertTime.utcOffset(timeZone);
        var dateToTimezone = revertTime.format();
        //converted to other timeZone
        return dateToTimezone;
}

产量

1)到-08:00偏移

2016-09-12 15:00:00.0-> 2016-09-12T07:00:00-08:00

2)到-02:00偏移

2016-09-12 15:00:00.0-> 2016-09-12T13:00:00-02:00

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM