我使用 Flutter 的日历在应用程序中选择日期,但我确保将其限制为仅当月。我通过设置来做到这一点:
- firstDate:月份开始(例如,2019 年 6 月 1 日,
- lastDate:下个月的开始(例如,2019 年 7 月 1 日),
- 初始日期:DateTime.now()
现在是月底(撰写本文时为 6 月 30 日),我收到一个 AssertionError 消息,指出 initialDate 必须等于或早于 lastDate
。所以我打印了(最好的调试器!)我的日期,我得到了:
初始日期:2019-06-30 20:07:25
月末:2019-07-01 00:00:00
正如我所料。但是当我比较两者时,我得到initialDate.isBefore (endOfMonth) == false)
。
这只是我的一些人为错误,还是我必须联系 Flutter 团队?
最佳答案
哇,好吧,谈谈竞争条件。在发帖时,我的时间是 GMT-4,时间是 8:30。我正在使用 DateTime.utc
。因此 DateTime.now()
将显示为 6 月 30 日晚上 8:30,UTC 时间将尝试调整到我的时区,并在午夜之后结束,这意味着它在技术上是完全不同的天。将 DateTime.utc
替换为 DateTime()
,问题就解决了!
关于datetime - Dart DateTime 坏了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56828968/