0

我必须验证 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 中的月差?

4

3 回答 3

1

这里列出了一个非常可靠的。我没有找到作者的名字,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;
}
于 2011-02-16T15:50:03.143 回答
1

这就是我想出的...

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

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

于 2011-02-16T15:55:51.790 回答
0

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

于 2014-10-08T15:43:05.350 回答