Dart日期时间差异,以周,月和年为单位

时间:2019-10-14 11:21:58

标签: datetime flutter time dart

我正在从事一个项目,希望添加DateTime的分钟,小时,天,周,月和年之间的差异。我能够在几分钟之内达到几天。例如

DateTime.now().difference(DateTime(2019, 10, 7)).inDays

但是我在数周,数月甚至数年的时间内都很难创建它。我该怎么办,请帮忙

2 个答案:

答案 0 :(得分:0)

我构建了一个名为Jiffy

的软件包来帮助我
Jiffy([2018, 1, 29]).diff(Jiffy([2019, 10, 7]), "days"); // -616
Jiffy([2018, 1, 29]).diff(Jiffy([2019, 10, 7]), "weeks"); // -88
Jiffy([2018, 1, 29]).diff(Jiffy([2019, 10, 7]), "months"); // -20
Jiffy([2018, 1, 29]).diff(Jiffy([2019, 10, 7]), "years"); // -1

答案 1 :(得分:0)

有一个非常简单的方法来执行此操作,并且只需要很少的日期/时间算术知识。

只需比较两个DateTimes的microsecondSinceEpoch值:

Duration compare(DateTime x, DateTime y) {
   return Duration(microseconds: (x.microsecondsSinceEpoch - y.microsecondsSinceEpoch).abs())
}

DateTime x = DateTime.now()
DateTime y = DateTime(1994, 11, 1, 6, 55, 34);

Duration diff = compare(x,y);

print(diff.inDays);
print(diff.inHours);
print(diff.inMinutes);
print(diff.inSeconds);

上面的代码有效,并且比对leap年和基于时间的异常异常进行检查要有效得多。