web-dev-qa-db-ja.com

Dart / Flutter 2つのTimeOfDay時間を比較する方法は?

TimeOfDayドキュメントには比較演算子がなく、プリミティブ比較は機能しません。私が今考えることができる唯一の解決策は、TimeOfDayをDateTimeに変換し、DateTimeの差分メソッドを使用することです。

誰かがより良い解決策を持っていますか?

5
Jesse

それをdoubleに変換してから比較します。

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

3
Lucas

両方の値を分数に変換し、それらを比較して差を計算しました:)

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;
0
IcarusTyler

これは不可能だと思います。 DateTimeで.subtract.differenceとして使用することもできます

0
Fellipe Malta

@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 = _doubleOpenTime - _doubleNowTime;

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

print('Here your Happy $_hr Hour and _minute min');

十分な情報がないため、2つのTimeOfDay変数を実際に比較することはできません。ダートは、比較したい日、月、年を知りません。あなたが言ったように、唯一の方法はTimeOfDayDateTimeに変換することです。

それ以外の場合は、他の回答で提案されているようにTimeOfDaydoubleにいつでも変換して、差を計算できます。

0
Dani