【问题标题】:calculate hours/minutes between two times in dart计算飞镖两次之间的小时/分钟
【发布时间】:2021-05-12 07:56:56
【问题描述】:

我想在 dart 中获取/计算两次之间的小时和分钟。 示例:如果 start_time 为 17:30,end_time 为 09:00(后天),则应返回总计:15 小时 30 分钟

我的代码:

check_two_times_is_before(String start_time, String end_time){
    var format = DateFormat("HH:mm");
    var start = format.parse(start_time);
    var end = format.parse(end_time);

    if(start.isAfter(end)) {
     // do something here
    }
  }

【问题讨论】:

    标签: flutter datetime dart


    【解决方案1】:

    您可以在DateTime 类上使用difference 方法。

    check_two_times_is_before(String start_time, String end_time){
        var format = DateFormat("HH:mm");
        var start = format.parse(start_time);
        var end = format.parse(end_time);
    
        if(start.isAfter(end)) {
           end = end.add(Duration(days: 1));
           Duration diff = end.difference(start);
           final hours = diff.inHours;
           final minutes = diff.inMinutes % 60;
           print('$hours hours $minutes minutes');
        }
    }
    

    【讨论】:

    • 此解决方案不正确,因为当您测试 start_time 为 17:30 且 end_time 为 09:00 时它返回 8 小时 510 分钟,它应该返回总计:15 小时 30 分钟
    • 是的,你是对的。我编辑了我的解决方案来解决这两个问题。你能再检查一下吗?基本上,如果开始在结束之后,只需将 1 天添加到结束持续时间,这样您就可以获得所需的差异。
    • 新编辑返回 8 小时 30 分钟它应该返回:15 小时 30 分钟
    • 复制粘贴时,我漏掉了一行。我希望这将是最后的编辑:D
    【解决方案2】:

    你可以试试 Duration 类

    Duration duration = end.difference(start).abs();
    final hours = duration.inHours;
    final minutes = duration.inMinutes % 60;
    print('$hours hours $minutes minutes');
    

    【讨论】:

    • 分钟计算可以是简单的minutes = duration.inMinutes % 60;
    • 您的解决方案返回:-8 小时 30 分钟,当您测试 start_time 是 17:30 和 end_time 是 09:00 它应该返回总计:15 小时 30 分钟
    • @blue492 添加abs() 函数将解决问题。我已经更新了我的答案。
    猜你喜欢
    • 2022-10-05
    • 2012-02-19
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2017-11-05
    • 2014-05-20
    • 1970-01-01
    相关资源
    最近更新 更多