如何在几个月内计算两个ActionScript Date对象之间的差异?

时间:2011-02-16 15:46:32

标签: date actionscript datediff

我必须验证1)结束日期不小于开始日期和2)两个UTC日期之间的差异不超过12个月。为此,我需要一个monthDifference函数:

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

由于部分月份可能令人困惑,因此月份差异应该起作用:

  • 2010年1月1日至2010年1月31日之间的月差为零(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中的月份差异?

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;
}

答案 1 :(得分:1)

这就是我想出来的......

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

如果有任何错误,请告诉我!

答案 2 :(得分:0)

这不是那么容易,因为你必须计算闰年!我认为你应该从DateUtils.as库中查看AS3Commons-lang。有一个名为addMonths()的非常有用的方法可以帮助您,因为它可以处理无效的日期。