2012-05-17 50 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(); 

}