将时区偏移应用于js代码

时间:2015-07-06 21:45:38

标签: javascript date time utc timezone-offset

我正在尝试将当前时间与我在数据库中的一些时间字符串变量进行比较。

我有以下代码正常工作,但我服务器上的时间发生了变化,现在它不再有效了。

var d = new Date();
var day = d.getDate();
if ((day.toString()).length == 1){
    day='0'+day;
}
var month = d.getMonth()+1;
if ((month.toString()).length == 1){
    month='0'+month;
}


var mins = d.getMinutes()+100;
console.log("mins is " + mins);
var timeVar = (d.getHours() * 100) + mins;

//concatenated string version of the var
var currtime = year+month+day+timeVar;

我知道如果我调用d.getTimezoneOffset(),我得到-240,这正是我的问题,我休息4小时。但是我不能以正确的方式将这个值应用到我的代码中。

现在我的currTime变量返回:

20150707242但我需要它返回20150 7 072 2 42

任何帮助表示赞赏。

更新

我准备使用正确的timeVar:

var d2 = new Date(new Date().getTime() + (d.getTimezoneOffset() * 1000));
var hrs2 = d2.getUTCHours();
var mins2 = d2.getUTCMinutes();

console.log("hrs2 = " + (hrs2+1) + " mins2 = "+ (mins2 + 4));

var actualHrs = hrs2+1;
var actualmins = mins2 +4;
var currtime = year+month+day+actualHrs+actualmins;

但是现在我的问题存在于我的day变量中:

var d = new Date();
var day = d.getDate();
if ((day.toString()).length == 1){
    day='0'+day;
}

因为我的时间提前4小时,所以它认为我现在的日子是明天。

任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以使用var a = Date(timestamp)生成正确的日期对象,这是从01-01-1970开始的内部毫秒数。

面对两个日期对象是一个简单的减法

var a = new Date();
var b = new Date(timestring);
var delta = a - b // a signed integer

posts

正如你已经做到的那样

var d2 = new Date(new Date().getTime() + (d.getTimezoneOffset() * 1000));

是一种处理时区问题的好方法