Dart/Flutter 如何比较两个 TimeOfDay 时间?

Jes*_*sse 19 datetime dart timeofday flutter

TimeOfDay文档没有比较运算符,原始比较不起作用。我现在能想到的唯一解决方案是转换TimeOfDayDateTime并使用DateTime的差异方法。

有没有人有更好的解决方案?

Luc*_*cas 29

将其转换为双精度然后比较。

double toDouble(TimeOfDay myTime) => myTime.hour + myTime.minute/60.0


Mic*_*ell 13

extension TimeOfDayExtension on TimeOfDay {
  int compareTo(TimeOfDay other) {
    if (hour < other.hour) return -1;
    if (hour > other.hour) return 1;
    if (minute < other.minute) return -1;
    if (minute > other.minute) return 1;
    return 0;
  }
}
Run Code Online (Sandbox Code Playgroud)


小智 7

从@Lucas想法谢谢,就可以计算出小时分钟

TimeOfDay yourTime ; 
TimOfDay nowTime = TimeOfDay.now()

double _doubleYourTime = yourTime.hour.toDouble() +
            (yourTime.minute.toDouble() / 60);
double _doubleNowTime = nowTime.hour.toDouble() +
            (nowTime.minute.toDouble() / 60);

double _timeDiff = _doubleYourTime - _doubleNowTime;

double _hr = _timeDiff.truncate();
double _minute = (_timeDiff - _timeDiff.truncate()) * 60;

print('Here your Happy $_hr Hour and also $_minute min');
Run Code Online (Sandbox Code Playgroud)


mat*_*ode 5

我通过将两个值转换为分钟数并进行比较来计算差异:)

TimeOfDay now = TimeOfDay.now();
int nowInMinutes = now.hour * 60 + now.minute;

TimeOfDay testDate = TimeOfDay(hour: 2, minute: 20);
int testDateInMinutes = testDate.hour * 60 + testDate.minute;
Run Code Online (Sandbox Code Playgroud)