可以用 Java 完成
com.ibm.icu.util.Calendar.getInstance(Locale alocale).getFirstDayOfWeek()
在 Dart 中是否有等效的方法来获取它?
这东西对我有用
DateTime today = DateTime.now();
_firstDayOfTheweek = today.subtract(new Duration(days: today.weekday));
使用 Flutter,您只需使用:
MaterialLocalizations.of(context).firstDayOfWeekIndex;
刚找到:
https://github.com/dart-lang/intl/blob/master/lib/date_symbol_data_local.dart
搜索“FIRSTDAYOFWEEK”,不难弄清楚如何使其发挥作用。
获取一周的第一天和一周的最后一天:
print("today is day: ${DateTime.now().weekday}");
print(
"monday is day: ${DateTime.now().subtract(Duration(days: DateTime.now().weekday - 1))}");
print(
"sunday is day: ${DateTime.now().add(Duration(days: DateTime.now().weekday - 1))}");
经过长时间的搜索,我发现
jiffy
解决了我的问题。您可以将它与 Intl
一起使用并获得您想要的。
只需在 main.dart 中初始化它即可
void main() async {
Intl.defaultLocale = Intl.systemLocale; // Define the default locale as System Locale
await Jiffy.locale(Intl.defaultLocale); // Define Jiffy locale
runApp(MyApp());
}
然后,您可以使用
Jiffy
功能来获取一周的开始和结束
print(Jiffy(date).startOf(Units.WEEK));
print(Jiffy(date).endOf(Units.WEEK));
我不知道如何让它发挥作用。鲍勃,如果你能分享你的解决方案,那就太好了。
这是我在 Flutter 中使用的:
GlobalMaterialLocalizations.delegate
.load(locale)
.then((MaterialLocalizations materialLocalizations)
{
print("${materialLocalizations.firstDayOfWeekIndex}");
});
MaterialLocalizations.of(context).firstDayOfWeekIndex;
返回应用程序区域设置一周的第一天,默认情况下为“en_US”。
如果你想使用系统区域设置,你可以使用
var systemLocale = Platform.localeName;
var day = DateFormat.yMd(systemLocale).dateSymbols.FIRSTDAYOFWEEK;
周一返回 0,周日返回 6