我是 Flutter 新手,我正在尝试以 UTC 格式输出当天的开始时间。 我使用 Flutter 3.3.7 和 Dart SDK 2.18.4。
首先,我选择当前日期。
DateTime dt = DateTime.now();
接下来,我使用我自己实现的 DateTime 类的扩展。
extension DateTimeFromTimeOfDay on DateTime {
DateTime appliedFromTimeOfDay(TimeOfDay timeOfDay) {
return DateTime(year, month, day, timeOfDay.hour, timeOfDay.minute);
}
}
它输出相同的日期,只是我通过 TimeOfDay 类传递它的时间(在本例中为 00:00)。
dt = dt.appliedFromTimeOfDay(const TimeOfDay(hour: 0, minute: 0));
print(dt.toUtc()); //2022-11-08 21:00:00.000Z
但是当我运行此代码时,它输出一个时间非零的日期。
我还尝试将 toUtc() 方法添加到扩展中。
extension DateTimeFromTimeOfDay on DateTime {
DateTime appliedFromTimeOfDay(TimeOfDay timeOfDay) {
return DateTime(year, month, day, timeOfDay.hour, timeOfDay.minute).toUtc();
}
}
那也没用。
如何获取 UTC 格式的日期时间(一天中的时间归零)?例如, 2022-11-08 00:00:00.000Z
DateTime
有一个 utc
构造函数可以让你做到这一点。
extension DateTimeFromTimeOfDay on DateTime {
DateTime appliedFromTimeOfDay(TimeOfDay timeOfDay) {
return DateTime.utc(year, month, day, timeOfDay.hour, timeOfDay.minute);
}
}
DateTime today = DateTime.now()
.appliedFromTimeOfDay(const TimeOfDay(hour: 0, minute: 0)); // output: 2022-11-09 00:00:00.000Z (note the Z which indicate UTC)
尝试一下这个扩展方法
extension DateTimeExtension on DateTime {
DateTime getDateOnly() {
return DateTime(this.year, this.month, this.day);
}
}
您可以使用DateUtils.dateOnly。
import 'package:flutter/material.dart';
DateTime dateTime = DateTime.now(); // 2024-01-01 01:23:45.123456
DateTime dateOnly = DateUtils.dateOnly(dateTime); // 2024-01-01 00:00:00.000