Как рассчитать и получить список месяцев между двумя годами в Flutter?

#flutter #datetime

#трепетание #дата и время

Вопрос:

Попытка получить список всех месяцев в заданном диапазоне лет.

   var startYear = DateTime(1999);
  var endYear = DateTime(2021);
 

Результат должен быть следующим

 List monthsInRange = [
Jan 1999,
Feb 1999,
Mar 1999,
.
.
.
.
.
.
.
.
.
.
.
Dec 2021
]
 

Любая помощь была бы отличной.

Ответ №1:

Сначала добавьте intl dep в свой pubspec.yaml

 dependencies:
  flutter:
    sdk: flutter
  intl: ^0.16.1
 

импортируйте пакет :

 import 'package:intl/intl.dart';
 

затем создайте функцию для :

 List<String> listmonthyear(startYear, endYear) {
  List<String> listdate = []; //if you want String
  while (startYear != endYear) {
    listdate.add(DateFormat.yMMM().format(startYear).toString());
    startYear =
        new DateTime(startYear.year, startYear.month   1, startYear.day);
  }
  return listdate;
}
 

Комментарии:

1. Это приведет к сбою, если StartYear.day равен 30 или 31, а следующий месяц короче. В итоге вы пропустите следующий месяц и перейдете к началу следующего месяца. Два совета: (1) всегда используйте .utc. (2) используйте месяц 1 только тогда, когда день = 1.