我正在尝试按升序对 DateTime 时间元素列表进行排序。我已经意识到像 > 或 < 这样的正常运算符不要剪掉它。比较两个 DateTime 变量的最佳方法是什么?
Jul*_*urt 34
只需使用方法isAfter(),isBefore()或isAtSameMomentAs()从DateTime。
其他替代方法,使用compareTo(DateTime other),如文档中所示:
将此 DateTime 对象与 [other] 进行比较,如果值相等则返回零。
如果此 DateTime [isBefore] [other],则返回负值。如果它 [isAtSameMomentAs] [other],则返回 0,否则返回正值(当 this [isAfter] [other] 时)。
这是排序日期的代码示例:
void main() {
var list = [
DateTime.now().add(Duration(days: 3)),
DateTime.now().add(Duration(days: 2)),
DateTime.now(),
DateTime.now().subtract(Duration(days: 1))
];
list.sort((a, b) => a.compareTo(b));
print(list);
}
Run Code Online (Sandbox Code Playgroud)
看到它在这里工作。
小智 20
Dart 中的日期时间比较
DateTime.compareTo(日期时间其他):
DateTime dt1 = DateTime.parse("2021-12-23 11:47:00");
DateTime dt2 = DateTime.parse("2018-02-27 10:09:00");
if(dt1.compareTo(dt2) == 0){
print("Both date time are at same moment.");
}
if(dt1.compareTo(dt2) < 0){
print("DT1 is before DT2");
}
if(dt1.compareTo(dt2) > 0){
print("DT1 is after DT2");
}
Run Code Online (Sandbox Code Playgroud)
DateTime.isAtSameMomentAs(日期时间其他):
DateTime dt1 = DateTime.parse("2021-12-23 11:47:00");
DateTime dt2 = DateTime.parse("2018-02-27 10:09:00");
if(dt1.isAtSameMomentAs(dt2)){
print("Both DateTime are at same moment.");
}
Run Code Online (Sandbox Code Playgroud)
DateTime.isAfter(日期时间其他):
DateTime dt1 = DateTime.parse("2021-12-23 11:47:00");
DateTime dt2 = DateTime.parse("2018-02-27 10:09:00");
if(dt1.isAfter(dt2)){
print("DT1 is after DT2");
}
Run Code Online (Sandbox Code Playgroud)
DateTime.isBefore(日期时间其他):
DateTime dt1 = DateTime.parse("2021-12-23 11:47:00");
DateTime dt2 = DateTime.parse("2018-02-27 10:09:00");
if(dt1.isBefore(dt2)){
print("DT1 is before DT2");
}
Run Code Online (Sandbox Code Playgroud)
Sps*_*mta 13
这就是我如何理解和实现代码,它将在布尔模式下导致 true / false。
DateTime valEnd = edate ;
DateTime date =DateTime.now();
bool valDate = date.isBefore(valEnd);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16124 次 |
| 最近记录: |