extension DateTimeExtension on DateTime {
DateTime setTimeOfDay(TimeOfDay time) {
return DateTime(this.year, this.month, this.day, time.hour, time.minute);
}
DateTime setTime(
{int hours = 0,
int minutes = 0,
int seconds = 0,
int milliSeconds = 0,
int microSeconds = 0}) {
return DateTime(this.year, this.month, this.day, hours, minutes, seconds,
milliSeconds, microSeconds);
}
DateTime clearTime() {
return DateTime(this.year, this.month, this.day, 0, 0, 0, 0, 0);
}
///..... add more methods/properties for your convenience
}
这样使用
import 'package:your_app/dateTime_extensions.dart';
date.clearTime(); //to clear timeSpan
date.setTime(); //also be used to clear time if you don't provide any parameters
date.setTime(hours: 16,minutes: 23,seconds: 24); // will set time to existing date eg. existing_date 16:23:24
date.setTimeOfDay(TimeOfDay(hour: 16, minute: 59));
5条答案
按热度按时间ru9i0ody1#
这是不可能的。
TimeOfDay
* 仅 * 包含小时和分钟。而DateTime
还包含日/月/年如果你想转换它,你将需要更多的信息。比如当前的日期时间。然后将两者合并成一个最终的日期时间。
vtwuwzda2#
您可以使用DateTime扩展
那么您可以这样使用它:
final dateTime = yourDate.applied(yourTimeOfDayValue);
并将pubspec.yaml中sdk版本更改为
watbbzwu3#
您可以像这样使用扩展,也可以在单独的文件(如dateTime_extensions.dart)中添加更多的扩展方法,以使您的工作更易于将来的项目
文件名:日期时间扩展名.dart;
这样使用
ar5n3qh54#
下面是一个连接
DateTime
和HourOfDay
的小方法:yacmzcpb5#
您可以在
TimeOfDay
类别上设定副档名:然后按如下方式使用它:
如果你在另一个文件中定义了扩展名,并且你还没有导入它,如果你使用的是
vsc
,你可以只输入timeOfDay.toDateTime();
,然后ctrl + .
和vsc
将建议导入该文件。如果你没有使用vsc
,那么我猜你必须手动导入扩展名的文件。