這個問題的目的是收集解決方案,使用內置的Date類來計算日期/時間,而不是編寫冗長複雜的函數。如何使用內置的Date類節省時間?
我會自己寫一些答案,並接受一個答案,如果有人提出了非常聰明的東西。但是,這通常意味着一系列解決方案,因爲我經常看到處理日期的代碼過於複雜。
請記住這是而不是對於Date類不能做的事情的長期解決方案。
一個良好的開始是在這裏找到參考: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/Date.html
這個問題的目的是收集解決方案,使用內置的Date類來計算日期/時間,而不是編寫冗長複雜的函數。如何使用內置的Date類節省時間?
我會自己寫一些答案,並接受一個答案,如果有人提出了非常聰明的東西。但是,這通常意味着一系列解決方案,因爲我經常看到處理日期的代碼過於複雜。
請記住這是而不是對於Date類不能做的事情的長期解決方案。
一個良好的開始是在這裏找到參考: http://help.adobe.com/en_US/AS3LCR/Flash_10.0/Date.html
要正確比較,你需要使用的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");
爲了得到當前系統日期只需創建一個新的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());
內置的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());
你可以很容易找到,如果一年是沒有使用Date類編碼的所有規則的例外閏年。通過從第一個(請求集市第0個)的集合中減去一天,您可以找到2月份的天數。
記住的月份是零索引,以便集市是第3個月有索引2
function CheckIfYearIsLeapYear(year:uint):Boolean
{
return new Date(year, 2, 0).Date == 29;
}
還有ObjectUtil.dateCompare(a,b)
這似乎是相當赤裸裸的聲譽嫖娼。我建議你在災難來臨之前改變這個以及你對社區wiki的回答。 – Welbog 2009-04-13 14:35:59