Flutter中的日期相關類是Dart語言的DateTime類。而這個類只提供了基本的日期相關信息粘捎。這里提供一種計算從1970年1月1日開始的周數(shù)計算方法:
static const int EPOCH_WEEK_DAY = DateTime.thursday;
static const int EPOCH_MILLIS_SECONDS = 0;
static const int EPOCH_JULIAN_DAY = 0;
static int weekSinceEpoch(DateTime dateTime, int weekStart) {
DateTime epoch = DateTime.utc(1970);
dateTime = new DateTime.utc(dateTime.year, dateTime.month, dateTime.day);
int offset = EPOCH_WEEK_DAY - weekStart;
if (offset < 0) {
offset += 7;
}
int delta = EPOCH_JULIAN_DAY - offset;
return (dateTime.difference(epoch).inDays - delta) ~/ 7;
}
其中weekStart可根據(jù)Localizations獲取
DateTime now = DateTime.now();
MaterialLocalizations localizations = MaterialLocalizations.of(context);
int weekSinceEpoch = DateUtils.weekSinceEpoch(now,
localizations.firstDayOfWeekIndex);