相关文章推荐
心软的小虾米  ·  Flutter ...·  1 周前    · 
打篮球的蛋挞  ·  Maui - how to use ...·  2 月前    · 
激动的盒饭  ·  html js 读取txt ...·  4 月前    · 
无邪的八宝粥  ·  Caused by: ...·  1 年前    · 

我们在开发中,如果遇到计算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 开发》

在我们的日常生活和工作中,经常会遇到需要计算两个日期之间的时间差的情况,例如计算某个活动的持续时间,或者计算两个事件之间的间隔天数。在 Flutter 中,我们可以使用 Dart 的 DateTime 类和 DateFormat 类来实现这个功能。 print(m); //时间戳 1622289475180 var s = DateTime.fromMillisecondsSinceEpoch(1622260086181); print(s); //时间戳转时间 2021-05-29 11:48:0 fromMillisecondsSinceEpoch,注意这个时间戳转日期方法,要乘一千,为毫秒,startTime* 1000。两个时间戳,开始时间和结束时间,获取两者相减的时长。 假如现在有个需求,我想要计算 `1 亿` 个 `1~10000` 间随机数的平均值,在界面上显示结果,该怎么办? 可能有小伙伴踊跃发言:这还不简单,生成 `1 亿` 个随机数,算呗。 话不多说,直接上代码:⬇️ static handleDate(String oldTime) { String nowTime = new DateTime.now().toString().split('.')[0].replaceAll('-', '/'); int nowyear = int.parse(nowTime.split(" ")[0].split('/')[0]); int nowmonth = int.parse(nowTime.split(" ")[0].. DateTime now = DateTime.now(); DateTime time = DateTime.parse('2018-12-31'); if (now.isBefore(time)) { Duration duration = time.difference(now); print(duration.inDays....