2009-04-13 31 views
1

這個問題的目的是收集解決方案,使用內置的Date類來計算日期/時間,而不是編寫冗長複雜的函數。如何使用內置的Date類節省時間?

我會自己寫一些答案,並接受一個答案,如果有人提出了非常聰明的東西。但是,這通常意味着一系列解決方案,因爲我經常看到處理日期的代碼過於複雜。

請記住這是而不是對於Date類不能做的事情的長期解決方案。

一個良好的開始是在這裏找到參考: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/Date.html

+0

這似乎是相當赤裸裸的聲譽嫖娼。我建議你在災難來臨之前改變這個以及你對社區wiki的回答。 – Welbog 2009-04-13 14:35:59

回答

1

要正確比較,你需要使用的getTime()函數的日期,它會給你以毫秒爲單位的時間自1970年以來這使得它易於1月1日,來比較日期,後面的日期將返回更大的值。

你可以從另一箇中減去一個以獲得差異,但不幸的是沒有內置的時間跨度類來處理這個乾淨的;您將不得不使用一些數學方法向用戶正確顯示差異(例如,將差異與一天中的毫秒數相除以獲得天數差異)。

var date1:Date = new Date(1994, 12, 24); 
var date2:Date = new Date(1991, 1, 3); 
if(date1.getTime() > date2.getTime()) 
    trace("date1 is after date2"); 
else 
    trace("date2 is after or the same as date1"); 
0

爲了得到當前系統日期只需創建一個新的Date對象不傳遞任何值給構造函數。就像這樣:

var today:Date = new Date(); 
trace("The date and time right now is: " + today. toLocaleString()); 
trace("The date right now is: " + today. toLocaleDateString()); 
trace("The time right now is: " + today. toLocaleTimeString()); 
0

內置的Date類很好地處理了「溢出」,這可以用來增加或減少時間。如果其中一個字段溢出,則日期類通過添加或減去溢出來處理它。

var date:Date = new Date(1993, 12, 28); 
trace("7 days after the " + date.toLocaleDateString()); 
date.setDate(date.Date + 7); 
trace("It was the " + date.toLocaleDateString()); 
1

你可以很容易找到,如果一年是沒有使用Date類編碼的所有規則的例外閏年。通過從第一個(請求集市第0個)的集合中減去一天,您可以找到2月份的天數。

記住的月份是零索引,以便集市是第3個月有索引2

function CheckIfYearIsLeapYear(year:uint):Boolean 
{ 
    return new Date(year, 2, 0).Date == 29; 
} 
1

還有ObjectUtil.dateCompare(a,b)