calculateNewTimeFromMonth static method

int calculateNewTimeFromMonth(
  1. DateTime date,
  2. int months
)

Implementation

static int calculateNewTimeFromMonth(DateTime date, int months) {
  // 计算新的年份和月份
  int newYear = date.year;
  int newMonth = date.month + months;

  // 处理月份进位
  while (newMonth > 12) {
    newYear++;
    newMonth -= 12;
  }

  // 处理月份借位
  while (newMonth < 1) {
    newYear--;
    newMonth += 12;
  }

  // 处理目标月份天数不足的情况
  final daysInNewMonth = DateTime(newYear, newMonth + 1, 0).day;
  final newDay = date.day > daysInNewMonth ? daysInNewMonth : date.day;

  return DateTime(newYear, newMonth, newDay, date.hour, date.minute, date.second, date.millisecond, date.microsecond).millisecondsSinceEpoch;
}