これはほとんどの言語でかなり一般的なタスクだと思いますが、Flutterアプリでこれを実行する方法はわかりませんでした。 Dartの最後の真夜中のDateTimeオブジェクトを取得する方法は?または潜在的に、今日/明日/昨日の特定の時間?
これは同じことをする必要があります
final now = DateTime.now();
final lastMidnight = new DateTime(now.year, now.month, now.day);
この方法を使用して、この日の異なる時間を取得できます
final tomorrowNoon = new DateTime(now.year, now.month, now.day + 1, 12);
final yesterdaySixThirty = new DateTime(now.year, now.month, now.day - 1, 6, 30);
Duration
を加算/減算すると、うるう年と夏時間のために驚きが生じる可能性があるため、必要に応じて、絶対値の方がより安全になる場合があります。
[〜#〜] edit [〜#〜]:このソリューションは、UTCを使用している場合にのみ使用してください(夏時間は混乱する可能性があります)。
これまでに見つけた最も簡単な解決策:
final now = DateTime.now();
final lastMidnight = now.subtract(Duration(
hours: now.hour,
minutes: now.minute,
seconds: now.second,
milliseconds: now.millisecond,
microseconds: now.microsecond,
));
次に、Durationを減算または追加することにより、今日に関連する他の時間または日を取得できます。例:
final tomorrowNoon = lastMidnight.add(Duration(days: 1, hours: 12));
final yesterdaySixThirty = lastMidnight
.subtract(Duration(days: 1))
.add(Duration(hours: 6, minutes: 30));
DateTimeは不変であり、両方のメソッド(加算、減算)が新しいオブジェクトを返すことに注意してください。