Flutter日期操作之计算周

Flutter中的日期相关类是Dart语言的DateTime类。而这个类只提供了基本的日期相关信息。这里提供一种计算从1970年1月1日开始的周数计算方法:

  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可根据Localizations获取

DateTime now = DateTime.now();
    MaterialLocalizations localizations = MaterialLocalizations.of(context);
    int weekSinceEpoch = DateUtils.weekSinceEpoch(now,
                                    localizations.firstDayOfWeekIndex);
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容