以下行将给出当前时间
TimeOfDay _time = TimeOfDay.now(); //12:42
Run Code Online (Sandbox Code Playgroud)
我想从 _time // 即 12:52 或 10:52..etc 添加或删除 2 小时 10 分钟
Kat*_*kko 10
您可以使用扩展为TimeOfDay.
extension TimeOfDayExtension on TimeOfDay {
TimeOfDay addHour(int hour) {
return this.replacing(hour: this.hour + hour, minute: this.minute);
}
}
Run Code Online (Sandbox Code Playgroud)
所以你可以打电话给 TimeOfDay.now().addHour(2)
美东时间。
您甚至可以将上述方法改进为:
extension TimeOfDayExtension on TimeOfDay {
TimeOfDay add({int hour = 0, int minute = 0}) {
return this.replacing(hour: this.hour + hour, minute: this.minute + minute);
}
}
Run Code Online (Sandbox Code Playgroud)
你可以打电话: TimeOfDay.add(hour: 2, minute: 30)
我有同样的需求,然后我在 Kotlin 上检查了另一个库的来源,将他们的解决方案移植如下:
extension TimeOfDayExtension on TimeOfDay {
// Ported from org.threeten.bp;
TimeOfDay plusMinutes(int minutes) {
if (minutes == 0) {
return this;
} else {
int mofd = this.hour * 60 + this.minute;
int newMofd = ((minutes % 1440) + mofd + 1440) % 1440;
if (mofd == newMofd) {
return this;
} else {
int newHour = newMofd ~/ 60;
int newMinute = newMofd % 60;
return TimeOfDay(hour: newHour, minute: newMinute);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
其他解决方案不考虑超过 60 分钟或 24 小时。尝试添加 1 分钟23:59会导致崩溃。但是,这个安全地将其强制转换为00:00.
如果您只需要一次并且认为扩展太麻烦,您可以这样做:
TimeOfDay.fromDateTime(DateTime.now().add(Duration(minutes: 10)))
Run Code Online (Sandbox Code Playgroud)
使用时间选择器的更详细示例:
TimeOfDay selectedTime = await showTimePicker(
context: context,
initialTime: TimeOfDay.fromDateTime(DateTime.now().add(Duration(minutes: 10))),
);
Run Code Online (Sandbox Code Playgroud)
我希望,它会有所帮助。根据需要我们可以更改代码
void changeEndTime(TimeOfDay startTimeOfDay) {
DateTime today = DateTime.now();
DateTime customDateTime = DateTime(today.year, today.month, today.day,
startTimeOfDay.hour, startTimeOfDay.minute);
endTimeOfDay =
TimeOfDay.fromDateTime(customDateTime.add(Duration(minutes: 90)));
}
Run Code Online (Sandbox Code Playgroud)
TimeOfDay _time = TimeOfDay.now();
Run Code Online (Sandbox Code Playgroud)
我们可以这样做
TimeOfDay newTime = _time.replacing(
hour: _time.hour - 2,
minute: _time.minute
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3380 次 |
| 最近记录: |