date - 在 Dart 中仅比较 DateTimes 的日期
问题描述
我需要在我的应用程序中存储和比较日期(没有时间),而不关心时区。
我可以看到三个解决方案:
(date1.year == date2.year && date1.month == date2.month && date1.day == date2.day)
这就是我现在正在做的事情,但它非常冗长。date1.format("YYYYMMDD") == date2.format("YYYYMMDD")
这仍然相当冗长(虽然没有那么糟糕),但对我来说似乎效率低下......自己创建一个新的 Date 类,可能将日期存储为“YYYYMMDD”字符串,或自 1980 年 1 月 1 日以来的天数。但这意味着重新实现一大堆复杂的逻辑,如不同的月份长度、加/减和闰年.
创建一个新类还避免了我担心的极端情况,即Duration(days: 1)
由于夏令时更改而添加相同的日期。但是我没有想到这种方法可能存在边缘情况......
这些解决方案中哪个是最好的,或者有没有我没想到的更好的解决方案?
解决方案
自从我问这个问题以来,Dart 中已经发布了扩展方法。我现在将选项 1 实现为扩展方法:
extension DateOnlyCompare on DateTime {
bool isSameDate(DateTime other) {
return year == other.year && month == other.month
&& day == other.day;
}
}
推荐阅读
- java - 从java调用python脚本并逐行收集输出
- c# - 在不使用请求或上下文的情况下获取 ASP.NET MVC 中的绝对基本 url
- css - 无法更改 Telerik 的宽度:RadComboBox
- php - Laravel 会话的唯一数据输入
- java - 如何指定 JDK 的 orbd.exe(对象请求代理守护程序)使用的端口范围?
- python - 使用 Python 编写长 JSON 文档
- python - 使用张量索引对张量进行切片
- javascript - datepicker 禁用期货日期并将今天日期显示为默认日期
- django - Django 自定义组模型
- c# - 没有添加到提交但存在未跟踪的文件