在javascript日期中添加或减去时区差异

时间:2011-09-13 14:25:23

标签: javascript date

看看下面的代码。向下面的targetTime变量添加或减去时区差异的最佳方法是什么? GMT时区值来自此格式的数据库:伦敦时间为1.00,Pasific时间为-8.00,依此类推。

代码如下所示:

date = "September 21, 2011 00:00:00";
targetTime = new Date(date);

3 个答案:

答案 0 :(得分:50)

您可以使用Date.getTimezoneOffset,它以分钟为单位返回GMT的本地偏移量。请注意,它返回的值与您可能期望的符号相反。所以GMT-5是300而GMT + 1是-60。

var date = "September 21, 2011 00:00:00";
var targetTime = new Date(date);
var timeZoneFromDB = -7.00; //time zone value from database
//get the timezone offset from local time in minutes
var tzDifference = timeZoneFromDB * 60 + targetTime.getTimezoneOffset();
//convert the offset to milliseconds, add to targetTime, and make a new Date
var offsetTime = new Date(targetTime.getTime() + tzDifference * 60 * 1000);

答案 1 :(得分:13)

对我有用的简单功能:

adjustForTimezone(date:Date):Date{
    var timeOffsetInMS:number = date.getTimezoneOffset() * 60000;
    date.setTime(date.getTime() - timeOffsetInMS);
    return date
}

答案 2 :(得分:1)

如果您需要补偿时区,我将推荐以下代码段:

var dt = new Date('2018-07-05')
dt.setMinutes(dt.getMinutes() + dt.getTimezoneOffset())
console.log(dt)