以下行将给予当前时间
TimeOfDay _time = TimeOfDay.now(); //12:42
我想从_time //添加或删除2小时10分钟,例如12:52或10:52...等
stszievb1#
可以使用扩展为TimeOfDay添加方法。
TimeOfDay
extension TimeOfDayExtension on TimeOfDay { TimeOfDay addHour(int hour) { return this.replacing(hour: this.hour + hour, minute: this.minute); } }
所以你可以像TimeOfDay.now().addHour(2)一样调用编辑你甚至可以改进上面的方法,就像这样:
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); } }
您可以拨打:TimeOfDay.add(hour: 2, minute: 30)
TimeOfDay.add(hour: 2, minute: 30)
czq61nw12#
我有同样的需求,然后我检查了Kotlin上另一个library的源代码,并如下所示移植了他们的解决方案:
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); } } } }
其他解决方案不考虑超过60分钟或24小时,尝试在23:59上增加1分钟会导致崩溃,但是这个解决方案可以安全地将其转换为00:00。
23:59
00:00
2w3rbyxf3#
我希望,这将是有益的。根据需要,我们可以改变代码
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))); }
xesrikrc4#
如果您只需要一次,并且认为扩展太麻烦,可以这样做:
TimeOfDay.fromDateTime(DateTime.now().add(Duration(minutes: 10)))
时间选择器的更简洁示例:
TimeOfDay selectedTime = await showTimePicker( context: context, initialTime: TimeOfDay.fromDateTime(DateTime.now().add(Duration(minutes: 10))), );
2mbi3lxu5#
TimeOfDay _time = TimeOfDay.now();
我们可以这样做
TimeOfDay newTime = _time.replacing( hour: _time.hour - 2, minute: _time.minute );
c7rzv4ha6#
我写了另一个扩展,可能更简单一点。我也记住了60分钟的溢出:
TimeOfDay add({int hours = 0, int minutes = 0}) => TimeOfDay(hour: hour + hours + minutes ~/ 60, minute: minute + minutes % 60);
这里,minute和hour取自被覆盖的对象,如this.hour和this.minute
minute
hour
this.hour
this.minute
n6lpvg4x7#
对之前的答案进行了一些修改,以调整分钟数超过60的时间。你可以把它作为一个单独的文件添加到你的项目中,然后在一天中的任何时间调用add方法,只要记住它返回一个新的TimeOfDay,并且不修改现有的TimeOfDay。
import 'package:flutter/material.dart'; extension TimeOfDayExtension on TimeOfDay { TimeOfDay add({int hours = 0, int minutes = 0}) => TimeOfDay( hour: hour + hours + (minute + minutes) ~/ 60, minute: (minute + minutes) % 60); }
cidc1ykv8#
如果你想从当前时间减去2小时,你可以使用"TimeOfDay. fromDateTime()"得到它一天中的时间。从日期时间(www.example.com())减去(持续时间(小时:DateTime.now().subtract(Duration(hours: 2)));如果要在当前时间上增加2小时一天中的时间。fromDateTime(www.example.com(). add(持续时间(小时:DateTime.now().add(Duration(hours: 2)));
nnvyjq4y9#
我希望你能从中得到帮助
9条答案
按热度按时间stszievb1#
可以使用扩展为
TimeOfDay
添加方法。所以你可以像
TimeOfDay.now().addHour(2)
一样调用编辑
你甚至可以改进上面的方法,就像这样:
您可以拨打:
TimeOfDay.add(hour: 2, minute: 30)
czq61nw12#
我有同样的需求,然后我检查了Kotlin上另一个library的源代码,并如下所示移植了他们的解决方案:
其他解决方案不考虑超过60分钟或24小时,尝试在
23:59
上增加1分钟会导致崩溃,但是这个解决方案可以安全地将其转换为00:00
。2w3rbyxf3#
我希望,这将是有益的。根据需要,我们可以改变代码
xesrikrc4#
如果您只需要一次,并且认为扩展太麻烦,可以这样做:
时间选择器的更简洁示例:
2mbi3lxu5#
我们可以这样做
c7rzv4ha6#
我写了另一个扩展,可能更简单一点。我也记住了60分钟的溢出:
这里,
minute
和hour
取自被覆盖的对象,如this.hour
和this.minute
n6lpvg4x7#
对之前的答案进行了一些修改,以调整分钟数超过60的时间。
你可以把它作为一个单独的文件添加到你的项目中,然后在一天中的任何时间调用add方法,只要记住它返回一个新的TimeOfDay,并且不修改现有的TimeOfDay。
cidc1ykv8#
如果你想从当前时间减去2小时,你可以使用"TimeOfDay. fromDateTime()"得到它
一天中的时间。从日期时间(www.example.com())减去(持续时间(小时:DateTime.now().subtract(Duration(hours: 2)));
如果要在当前时间上增加2小时
一天中的时间。fromDateTime(www.example.com(). add(持续时间(小时:DateTime.now().add(Duration(hours: 2)));
nnvyjq4y9#
我希望你能从中得到帮助