dart 中的日期时间比较

Mik*_* O. 14 dart flutter

我正在尝试按升序对 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)