@CreativeStory

Dart не корректно определяется количество дней в месяце, в чем проблема?

Написал функцию на определение количества дней в месяце, вроде бы все до ужаса просто, но этот код работает коряво по непонятной мне причине. Например, в марте и октябре 2024 года определяет по 30 дней, а должно быть 31 день. Остальные месяцы отрабатывают корректно. Может кто уже сталкивался с аналогичной проблемой? Буду очень благодарен за дельный совет! Код ниже можно протестить на DartPad.

int getDaysInMonth(DateTime date) {
  // Создаем объект DateTime для первого дня следующего месяца
  DateTime firstDayOfNextMonth = (date.month < 12)
      ? DateTime(date.year, date.month + 1, 1)
      : DateTime(date.year + 1, 1, 1);
  
  // Вычитаем один день, чтобы получить последний день текущего месяца
  DateTime lastDayOfMonth = firstDayOfNextMonth.subtract(Duration(days: 1));
  
  // Возвращаем день последней даты, который является количеством дней в месяце
  return lastDayOfMonth.day;
}

void main() {
  DateTime date = DateTime(2024, 3, 1); // Пример: 1 марта 2024 года
  int daysInMonth = getDaysInMonth(date);
  print("Количество дней в месяце: $daysInMonth");
}
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
RomReed
@RomReed
JavaScript, Flutter, ReactNative, Redux, Firebase
int getDaysInMonth(DateTime date) {
  DateTime firstDayOfNextMonth = (date.month < 12)
      ? DateTime(date.year, date.month + 1, 1)
      : DateTime(date.year + 1, 1, 1);
  //проблема у тебя была тут. Ты сам у себя сьел 1 день 
  DateTime lastDayOfMonth = firstDayOfNextMonth.subtract(Duration(seconds: 1));
  
  return lastDayOfMonth.day;
}

void main() {
  DateTime date = DateTime(2024, 3, 1); // Пример: 1 марта 2024 года
  int daysInMonth = getDaysInMonth(date);
  print("Количество дней в месяце: $daysInMonth");
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы