2012-05-17 128 views
1

我有点困惑!我有JS将时间段添加/减去当前时间(Javascript)

//Set datetimes for the centre of the Timeline and the highlighting period 
var myCurrentDateTime = new Date(); 
var MS_PER_MINUTE = 60000; 
var MinsToDeductForCentre = 1440 
var MinsEitherSideOfNow = 720 
var myTLcenterdate = new Date(myCurrentDateTime - (MinsToDeductForCentre * MS_PER_MINUTE)); 
var tldate = myTLcenterdate.toString() 
var hlStartDate = new Date(myCurrentDateTime - (MinsEitherSideOfNow * MS_PER_MINUTE)); 
var hlEndDate = new Date(myCurrentDateTime + (MinsEitherSideOfNow * MS_PER_MINUTE));  

myTLcentredate给了我一个日期24小时的以下位当前时间之前

hlStartDate给了我一个日期12小时当前时间

之前,但hlEndDate给人NotANumber错误.. 。

它基本上把myCurrentDateTime和MinsEitherSideOfNow * MS_PER_MINUTE(43200000)为字符串值,并加入他们给予例如 “周四5月17日10点44分17秒UTC + 0100 201243200000”

为什么?

+0

你的代码似乎没什么问题。我试了一下,有没有例外。只需尝试“alert(”typeof hlEndDate is“+(typeof hlEndDate));”你会得到:“typeof hlEndDate是对象”。所以你的hlEndDate仍然是一个“Date”对象。没有错。 – arthur

回答

4

,这就足够了:

var dSubtract = new Date, 
    dAdd = new Date; 
// let dSubtract be Thu May 17 2012 12:11:54 GMT+0200 
// and dAdd   Thu May 17 2012 12:11:54 GMT+0200 
dSubtract.setMinutes(dSubtract.getMinutes()-1440); 
//=> dSubtract is now: Wed May 16 2012 12:00:54 GMT+0200 
dAdd.setMinutes(dAdd.getMinutes()+720); 
//=> dAdd is now: Fri May 18 2012 00:00:54 GMT+0200 

(例如在ofcourse我的时区)

+0

谢谢......我用过这个,因为它更容易理解。我只是无法理解为什么在hlStartTime中表达的部分被当作数学方程式处理,而在hlEndTime中,相同的表达式被当作字符串处理。 – Mych

+0

很高兴我能帮到你。我在Chromes开发人员工具中运行了您的代码,但没有显示您提到的问题。这可能是一个浏览器问题? – KooiInc

+0

我正在使用IE8 ...公司唯一允许的浏览器:( – Mych

0

使用函数parseInt函数上都variales的,就像这样:如果你想从一个日期加上或减去分钟

parseInt(var1) * parseInt(var2) 
+0

这甚至与某件事有关? – llamerr

0

试试这个

function SubtractTime(objStartdatetime, objEnddatetime) { 
//var T1 = new Date("2012/02/14 8:10:00"); 

d = new Date(); 
    T1 = new Date(objStartdatetime); 
    T2 = new Date(objEnddatetime);   
     misec = T2.getTime() - T1.getTime(); 

}

功能添加时间(objStartdatetime,objEnddatetime){// 变种T1 =新日期( “2012/02/14 8点10分00秒”);

d = new Date(); 
    T1 = new Date(objStartdatetime); 
    T2 = new Date(objEnddatetime);   
     misec = T2.getTime() + T1.getTime(); 

}