Flutter 中在时间处理方面还是比较简单的,我们主要用到的有两个类:

  • DateTime

    表示一个指定的时间点,包括年月日时分秒

  • TimeOfDay

    表示一天中的一个时间点,可以区分上午,下午,12小时制,24小时制等

获取当前时间

final now = DateTime.now();

这里就得到了一个当前时间的DateTime对象,然后就可以拿到你想要的信息:

final year = now.year;
final month = now.month;
final day = now.day;

还可以获取当前时星期几:

final week = now.weekday;

转时间戳

final now = DateTime.now();
String timestamp = now.millisecondsSinceEpoch.toString();

时间运算

  • 前2天

    final now = DateTime.now();
    final before = now.subtract(Duration(days: 2));
    
  • 后2天

    final now = DateTime.now();
    final after = now.add(Duration(days: 2));
    
  • 两个时间点相隔的时间数

    final now = DateTime.now();
    final after = now.add(Duration(days: 2));
    final diff = after.difference(now).inHours; // 相隔的小时数,也可以是分钟数,秒数
    

上午还是下午

可以使用TimeOfDay来处理:

final timeOfDay = TimeOfDay.now();
final amOrPm = timeOfDay.period;

其中timeOfDay.period实际上是一个枚举对象:

enum DayPeriod {
  /// Ante meridiem (before noon).
  am,

  /// Post meridiem (after noon).
  pm,
}

这样可以判断是上午还是下午了。

12/24小时制

  • 24小时

    final hour24 = timeOfDay.hour;
    
  • 12小时

    final hour12 = timeOfDay.hourOfPeriod;
    

还可以格式化输出当前的分钟小时数:

final timeStr = timeOfDay.format(context); // 11:49 PM