Dart:如何获取当前语言环境的一周第一天?

问题描述 投票:0回答:7

可以用 Java 完成

com.ibm.icu.util.Calendar.getInstance(Locale alocale).getFirstDayOfWeek()

在 Dart 中是否有等效的方法来获取它?

dart
7个回答
9
投票

这东西对我有用

DateTime today = DateTime.now();             
_firstDayOfTheweek = today.subtract(new Duration(days: today.weekday));

9
投票

使用 Flutter,您只需使用:

MaterialLocalizations.of(context).firstDayOfWeekIndex;


7
投票

刚找到:

https://github.com/dart-lang/intl/blob/master/lib/date_symbol_data_local.dart

搜索“FIRSTDAYOFWEEK”,不难弄清楚如何使其发挥作用。


3
投票

获取一周的第一天和一周的最后一天:

 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))}");

3
投票

经过长时间的搜索,我发现

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));

参考:https://pub.dev/packages/jiffy


1
投票

我不知道如何让它发挥作用。鲍勃,如果你能分享你的解决方案,那就太好了。

这是我在 Flutter 中使用的:

GlobalMaterialLocalizations.delegate
        .load(locale)
        .then((MaterialLocalizations materialLocalizations)
    {
        print("${materialLocalizations.firstDayOfWeekIndex}");
    });

0
投票
MaterialLocalizations.of(context).firstDayOfWeekIndex;

返回应用程序区域设置一周的第一天,默认情况下为“en_US”。

如果你想使用系统区域设置,你可以使用

var systemLocale = Platform.localeName; 
var day = DateFormat.yMd(systemLocale).dateSymbols.FIRSTDAYOFWEEK;

周一返回 0,周日返回 6

© www.soinside.com 2019 - 2024. All rights reserved.