【问题标题】:Flutter: how to calculate total working hours by using time in and time outFlutter:如何通过使用时间和超时来计算总工作时间
【发布时间】:2021-07-19 08:12:35
【问题描述】:

我正在创建一个用户可以超时和超时的应用程序,我想添加计算总工作时间的功能。例如,如果时间值是 10:30,超时值是 12:30,那么总工作时间应该是 2。

请帮助我如何做到这一点。

更新:




  final DateTime checkInTime = DateTime.now().subtract(Duration(hours: 9, minutes: 10));
  final DateTime checkOutTime = DateTime.now().subtract(Duration(hours: 5, minutes: 10));
  
  final hours = checkOutTime.difference(checkInTime).inHours;
  final minutes= checkOutTime.difference(checkInTime).inMinutes;
  final totalWorkingHours = '$hours.${(minutes - (hours*60))} hrs';
  print("hours  "+totalWorkingHours);  //output 4.0 hrs

它给了我 4 个工作时间,但它应该有 6:0

【问题讨论】:

    标签: flutter time calculation


    【解决方案1】:

    你可以用简单的数学来做到这一点,即

    超时-时间=总工作时间

    让我们分解一下如何在flutter中解决这个问题

    1. 首先将用户为In时的时间戳保存在DateTime中,即DateTime.now()
    2. Out 重复步骤 1
    3. 现在如果两者都不为空,则计算差值

    代码看起来像

    DateTime inTime = populateYourInTimeHere();
    DateTime outTime =  poupulateYourOutTimeHere();
    
    Duration workingHours = outTime.difference(inTime);// main part you need to know
    
    format(Duration d) => d.toString().split('.').first.padLeft(8, "0");
    
    
    
     
    The total working hour is format(workingHours)
    

    【讨论】:

      【解决方案2】:

      你可以这样做

      void main() {
        final DateTime checkInTime = DateTime.now().subtract(Duration(hours: 3));
        final DateTime checkOutTime = DateTime.now();
        
        final totalWorkingHours = checkOutTime.difference(checkInTime).inHours;
        print(totalWorkingHours);
      }
      

      输出为 3

      上面的代码只处理小时,但是如果你想同时处理小时和分钟,那么使用下面的代码

      void main() {
        final DateTime checkInTime = DateTime.now().subtract(Duration(hours: 3, minutes: 30));
        final DateTime checkOutTime = DateTime.now();
        
        final hours = checkOutTime.difference(checkInTime).inHours;
        final minutes= checkOutTime.difference(checkInTime).inMinutes;
        final totalWorkingHours = '$hours.${(minutes - (hours*60))} hrs';
        print(totalWorkingHours);
      }
      

      输出将是 3.30 小时

      【讨论】:

      • 嘿,在吗?你能请更新代码吗,我正在使用你的代码,但它给了我总工作时间的错误答案。请检查上面的更新代码。
      • @TimeToCode 我看过你的代码,应该是 4 对,CheckInTime: 2021-07-29 05:48:37.737 CheckOutTime: 2021-07-29 09:48:37.737 差值: hours 4.0 hrs如果我错了请纠正我,我可以知道你的用例是什么。
      • 我希望用户在上午 9 点进入并在下午 5 点超时,因此工作时间的总差异为 8,我使用 24 小时格式时间来做到这一点。谢谢你的回复!
      • @TimeToCode 你得到答案了吗?
      • @Mohan Sai Manthri 是的,我明白了!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 2015-08-14
      • 2020-12-01
      相关资源
      最近更新 更多