2011-09-01 39 views
1

我在這一塊上打了一堵牆。我的腳本查找在2個日期之間的時間不同,但是..Flash Date.getTime錯誤?

var data:Array = ["2011-08-30 11:19:19", "01-09-2011 02"]; 

var aDate:String = data[0].split(" ")[0]; 

var dateElements:Array = aDate.split("-"); 
var date1:Date = new Date(); 
date1.setDate(int(dateElements[2])); 
date1.setMonth(int(dateElements[1])-1); 
date1.setFullYear(int(dateElements[0])); 
date1.setHours(int(data[0].split(" ")[1].split(":")[0])); 

trace("date: " + date1.getDate()); 
trace("month: " + date1.getMonth()); 
trace("year: " + date1.getFullYear()); 
trace("hours: " + date1.getHours()); 

dateElements = data[1].split(" ")[0].split("-"); 
var date2:Date = new Date(); 
date2.setDate(int(dateElements[0])); 
date2.setMonth(int(dateElements[1])-1); 
date2.setFullYear(int(dateElements[2])); 
date2.setHours(int(data[1].split(" ")[1])); 

trace("__"); 
trace("date: " + date2.getDate()); 
trace("month: " + date2.getMonth()); 
trace("year: " + date2.getFullYear()); 
trace("hours: " + date2.getHours()); 
trace("__"); 
var elapse:Number = date2.getTime() - date1.getTime(); 

trace(Math.floor(elapse/3600000)); 

正如你可以看到,日期元素描繪出他們應有的方式。現在嘗試將數據數組的第一個元素更改爲「2011-08-31 11:19:19」。雖然日期元素沒有問題,但最後一次跟蹤會給出一個完全奇怪的值。更爲奇怪的是,在Flash IDE中第二次編譯此腳本時,編譯需要很長時間,然後根本沒有任何跟蹤,就好像腳本超時一樣。

這裏發生了什麼?

+0

我可以得到upvote,這樣我可以減少stackoverflow廣告? – recursivity

回答

1

如果您在設置日期(日期)之前設置了月份,則應該給出正確的結果。默認情況下,創建Date對象時,時間設置爲本地(操作系統)日期。現在是9月份,它只包含30天,因此當您將日期設置爲31時,它會自動轉換爲1.如果您將月份定義爲8月份,則應該接受31值。爲了避免二月出現問題,把年份放在首位可能是一個好主意。