Flutter&Dart日期格式化及时间戳转换

获取当前时间

Dart 获取当前时间,以及获取当前年、月、日等。

DateTime currentTime = DateTime.now();

currentTime.year // 当前年
currentTime.month // 当前月
currentTime.day // 当前日
currentTime.hour // 当前时
currentTime.minute // 当前分
currentTime.second // 当前秒
currentTime.millisecond // 当前毫秒
currentTime.microsecond // 当前微秒

currentTime.millisecondsSinceEpoch // 当前13位毫秒时间戳
currentTime.microsecondsSinceEpoch // 当前16位微秒数

currentTime.timeZoneName // 本地时区简码:GMT
currentTime.timeZoneOffset // 返回UTC与本地时差

创建指定时间

// 参数顺序依次是年月日时分秒
DateTime time = new DateTime(2022, 3, 22, 12, 33, 55);

创建指定时间还可以直接从符合日期格式的字符串直接转换,如下。

转换

日期字符串转为时间
// 如果没有分、秒、毫秒,程序会自动补0
DateTime.parse('2022-03-08');
DateTime.parse('2022-03-08 17');
DateTime.parse('2022-03-08 17:01:22.789');
// 加上时区
DateTime.parse('2022-03-08 17:01:22+0800');
日期时间转成时间戳
DateTime currentTime = DateTime.now();

currentTime.millisecondsSinceEpoch // 当前13位毫秒时间戳
currentTime.microsecondsSinceEpoch // 当前16位微秒数
时间戳转日期时间
int time = 1646728287921;
DateTime.fromMillisecondsSinceEpoch(time);

时间比较

// 比较两个时间的间隔,使用 difference() 和 Duration()

// difference() 可以计算两个时间差
time1.difference(time2) > Duration(year: 1, hours: 1, seconds: 1);

Duration diff = time1.difference(time2)
diff.inDays
diff.inHours
diff.inMinutes

// Duration() 是一个时间段长度
Duration timeDuration = new Duration(days: 1, minutes: 34);

// 时间先后比较
time1.isAtSameMomentAs(time2) // 时间相等,返回 true
time1.isBefore(time2) // time1 早,返回 true
time1.isAfter(time2) // time1 晚,返回 true
time1.compareTo(time2) // time1 晚,返回 1;time1 晚,返回 -1

时间加减

可以给某个时间增加或减少时间段(Duration)。

DateTime time = DateTime.now();
time.add(new Duration(days: 5)); // 时间增加
time.add(new Duration(days: -5)); // 时间减少

您的赞助将会支持作者创作及本站运维

发表评论


TOP