Flutter 计算两个日期的时间差

我们在开发中,如果遇到计算2个日期相差多少天,用什么方法获得呢?如果需要知道两个日期相差多少小时、多少分、多少秒,又该如何计算呢?

其实在 Flutter 中,想要计算日期和时间的差值非常简单,是需要使用 difference 函数即可。下面举例来说明。

示例

1. 计算两个日期相差多少天?

var startDate = new DateTime(2020, 12, 20);
var endDate = new DateTime.now();
var days = endDate.difference(startDate).inDays;

2. 计算两个日期相差多少小时?

var startDate = new DateTime(2020, 12, 20);
var endDate = new DateTime.now();
var hours = endDate.difference(startDate).inHours;

3. 计算两个日期相差多少分钟?

var startDate = new DateTime(2020, 12, 20);
var endDate = new DateTime.now();
var minutes = endDate.difference(startDate).inMinutes;

大家看,是不是非常简单,只要我们使用 difference 方法,就能获取到所有时间单位的差值。

源码简析

其实,DateTime 的 difference 方法 返回的是一个 Duration 对象。

Duration 是什么?

Duration 是用来表示时间跨度(差值)的类,例如27天,4小时,12分钟和3秒。Duration 提供了很多时间单位转换的方法以及时间加减计算的方法,使用起来非常方便。

注意,Duration 表示时间差值,它可以为负数。

它的属性:

  final int _duration;

就是两个时间差值,单位是微秒,它是最核心的一个属性了。

inDays、inHours、inMinutes 等,都是 Duration 的 get 方法,内部都是通过 _duration 属性除以相应的时间单位来得到结果的。

例如,天数计算:

  int get inDays => _duration ~/ Duration.microsecondsPerDay;

是不是非常方便,而且 Duration 可以在动画等非常多的场景中使用。

**PS:更多精彩内容,请查看 –> 《Flutter 开发》
**PS:更多精彩内容,请查看 –> 《Flutter 开发》
**PS:更多精彩内容,请查看 –> 《Flutter 开发》

本文地址:https://blog.csdn.net/u011578734/article/details/111997600