有时我们需要一天,一小时,一分钟,倒数第二,但我们知道的只是第二。
例如:
这是我的解决方案:
void _test() {
var diffseconds = 100;
var seconds = diffseconds % 60;
var minute = diffseconds ~/ 60 % 60;
var hour = diffseconds ~/ 60 ~/ 60 % 24;
var day = diffseconds ~/ 60 ~/ 60 ~/ 24;
print('day=$day');
print('hour=$hour');
print('minute=$minute');
print('second=$seconds');
}如果我可以将第二个更改为DateTime,我可以轻松地使用date.day等等,并且不需要再计算了。
因此,我想知道是否有任何api或简单的方法来实现它,没有任何计算的。
我想知道更好的解决办法。
发布于 2021-07-08 10:46:29
我不认为这个功能是内置在Dart中的,但是您可以在Duration中添加以下扩展,这或多或少就是您正在做的事情:
extension RestTimeOnDuration on Duration {
int get inDaysRest => inDays;
int get inHoursRest => inHours - (inDays * 24);
int get inMinutesRest => inMinutes - (inHours * 60);
int get inSecondsRest => inSeconds - (inMinutes * 60);
int get inMillisecondsRest => inMilliseconds - (inSeconds * 1000);
int get inMicrosecondsRest => inMicroseconds - (inMilliseconds * 1000);
}
void main() {
const duration = Duration(seconds: 123);
print('Days: ${duration.inDaysRest}'); // 0
print('Hours: ${duration.inHoursRest}'); // 0
print('Minutes: ${duration.inMinutesRest}'); // 2
print('Seconds: ${duration.inSecondsRest}'); // 3
print('Milliseconds: ${duration.inMillisecondsRest}'); // 0
print('Microseconds: ${duration.inMicrosecondsRest}'); // 0
}发布于 2021-07-08 06:42:25
只要使用Duration(seconds: seconds),它就能处理超过60个的值。
Duration(seconds: 123) // 2 minutes and 3 secondshttps://stackoverflow.com/questions/68296498
复制相似问题