Как рассчитать разницу между двумя объектами ActionScript Date в месяцах? - PullRequest
0 голосов
/ 16 февраля 2011

Я должен подтвердить, что 1) Дата окончания не меньше, чем Дата начала, и 2) разница между двумя датами UTC составляет не более 12 месяцев. Для этого мне нужна функция monthDifference:

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

Поскольку неполные месяцы могут сбивать с толку, вот как должны работать различия по месяцам:

  • Разница в месяце между 1 января 2010 года и 31 января 2010 года равна нулю (0) .
  • Разница в месяце между 31 января 2010 г. и 1 февраля 2010 г. равна единице (1) .
  • Разница в месяце между 1 января 2010 года и 28 февраля 2010 года - одна (1) .
  • Разница в месяце между 1 января 2010 года и 1 марта 2010 года составляет два (2) .

Как рассчитать разницу по месяцам в ActionScript 3.0?

Ответы [ 3 ]

1 голос
/ 16 февраля 2011

Это то, что я придумал ...

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

Пожалуйста, дайте мне знать, если есть какая-либо ошибка!

1 голос
/ 16 февраля 2011

Здесь указан довольно солидный здесь .Я не нашел имени автора, 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 голосов
/ 08 октября 2014

Это не так просто, потому что вам приходится считать с високосными годами! Я думаю, вам стоит посмотреть DateUtils.as из AS3Commons-lang библиотеки Существует действительно полезный метод под названием addMonths(), который может помочь вам, поскольку он работает с недопустимыми датами.

...