2011-02-16 34 views
0

我必須驗證1)結束日期不小於開始日期和2)兩個UTC日期之間的差異不超過12個月。要做到這一點,我需要一個monthDifference功能:如何在幾個月內計算兩個ActionScript Date對象之間的差異?

public static function monthDifference(start:Date, end:Date):int; 

由於部分月份可能會造成混淆,這是本月差異如何工作的:2010年1月,和一月之間

  • 月份差異31,2010 is zero (0)
  • 2010年1月31日至2010年2月1日的月差爲(1)
  • 2010年1月1日至2010年2月28日的月差額爲(1)
  • 2010年1月1日至2010年3月1日的月差是兩個(2)

如何計算ActionScript 3.0中的月份差異?

回答

1

有一個非常可靠的列出here。我沒有找到作者姓名,udayms是他的博客用戶名。

從他的課拉到:

private static function getMonths(date1:Date,date2:Date):Number{ 
    var yearDiff = getYears(date1,date2); 
    var monthDiff = date1.getMonth() - date2.getMonth(); 
    if(monthDiff < 0){ 
    monthDiff += 12; 
    } 
    if(date1.getDate()< date2.getDate()){ 
    monthDiff -=1; 
    } 
    return 12 *yearDiff + monthDiff; 
} 
+0

看起來很過分...請批評我的代碼,因爲我擔心它太簡單了! – Rudiger

1

這是我想出了...

public static function monthDifference(start:Date, end:Date):int { 
    return (end.getUTCFullYear() - start.getUTCFullYear()) * 12 + 
     (end.getUTCMonth() - start.getUTCMonth()); 
} 

請讓我知道,如果有任何錯誤!

0

這並不容易,因爲你必須指望閏年!我想你應該從AS3Commons-lang庫看DateUtils.as。有一個非常有用的方法,稱爲addMonths(),它可以幫助你,因爲它處理無效的日期。

相關問題