我想在大多数编程语言中这应该是一项相当普遍的任务,但对于我在Flutter应用程序中如何完成此操作并不清楚。如何在Dart中检索上一个午夜的DateTime对象?或者可能是今天/明天/昨天的任何特定时间?
这应该是相同的
var now = DateTime.now();
var lastMidnight = DateTime(now.year, now.month, now.day);
您可以使用此方法获取当天的不同时间。var tomorrowNoon = DateTime(now.year, now.month, now.day + 1, 12);
var yesterdaySixThirty = DateTime(now.year, now.month, now.day - 1, 6, 30);
根据您的需求,绝对值可能更安全,因为添加/减去 Duration
可能会因闰年和夏令时而导致意外情况。
编辑:仅在使用协调世界时(夏令时可能会出现问题)时使用此解决方案,或者无论如何都可以使用已接受的答案。
final now = DateTime.now();
final lastMidnight = now.subtract(Duration(
hours: now.hour,
minutes: now.minute,
seconds: now.second,
milliseconds: now.millisecond,
microseconds: now.microsecond,
));
我们可以通过减去或添加持续时间来获得相对于今天的任何其他时间或日期,例如:
final tomorrowNoon = lastMidnight.add(Duration(days: 1, hours: 12));
final yesterdaySixThirty = lastMidnight
.subtract(Duration(days: 1))
.add(Duration(hours: 6, minutes: 30));