#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.