【问题标题】:Flutter/Dart DateTime max min value颤振/飞镖日期时间最大值最小值
【发布时间】:2021-07-12 15:13:31
【问题描述】:
我想知道DateTime 的最小值和最大值以进行比较。
DateTimes 可以表示距纪元 (1970-01-01 UTC) 最多 100,000,000 天的时间值:-271821-04-20 到 275760-09-13。
我在DateTime 中没有看到最小值/最大值定义,有没有办法以编程方式获取最小值/最大值?
DateTime min; // -271821-04-20
DateTime max; // 275760-09-13
【问题讨论】:
标签:
flutter
datetime
dart
【解决方案1】:
我在这篇文章中看到有人定义了最小值/最大值:
https://github.com/google/json_serializable.dart/issues/796
// DateTimes can represent time values that are at a distance of at most 100,000,000
// days from epoch (1970-01-01 UTC): -271821-04-20 to 275760-09-13.
static DateTime minDateTime = DateTime.utc(-271821,04,20);
static DateTime maxDateTime = DateTime.utc(275760,09,13);
【解决方案2】:
目前似乎没有可用的东西。您可以提出功能请求并查看会发生什么,但现在唯一要做的就是为最大值和最小值创建 getter。不幸的是,我们也不能制作静态扩展方法,所以您只需要使用静态类或全局变量:
class DateTimeMaxMin {
static const _numDays = 100000000;
static DateTime get min => DateTime.fromMicrosecondsSinceEpoch(0).subtract(Duration(days: _numDays));
static DateTime get max => DateTime.fromMicrosecondsSinceEpoch(0).add(Duration(days: _numDays));
}