首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不需要计算就将秒转换为DateTime

不需要计算就将秒转换为DateTime
EN

Stack Overflow用户
提问于 2021-07-08 06:16:24
回答 2查看 475关注 0票数 1

有时我们需要一天,一小时,一分钟,倒数第二,但我们知道的只是第二。

例如:

  • 1 s -> 0天0小时0分1s
  • 10 s -> 0 0day 0分10 s
  • 100 s -> 0天0小时1分40

这是我的解决方案:

代码语言:javascript
复制
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或简单的方法来实现它,没有任何计算的

我想知道更好的解决办法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-08 10:46:29

我不认为这个功能是内置在Dart中的,但是您可以在Duration中添加以下扩展,这或多或少就是您正在做的事情:

代码语言:javascript
复制
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
}
票数 2
EN

Stack Overflow用户

发布于 2021-07-08 06:42:25

只要使用Duration(seconds: seconds),它就能处理超过60个的值。

代码语言:javascript
复制
Duration(seconds: 123) // 2 minutes and 3 seconds
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68296498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档