【问题标题】:Calculate time difference between two EditText计算两个EditText之间的时间差
【发布时间】:2016-06-03 16:30:23
【问题描述】:

我已经看到了几乎类似的问题,但我不会按我的意愿工作。事实上根本没有。

所以我一直在尝试计算我使用 TimePicker 为两个 EditTexts 设置的两个时间戳之间的时间差。

这是我无法工作的代码:

public void calcTime() throws Exception{
    String startTime = startworkFrom.getText().toString();
    String endTime = startworkTo.getText().toString();

    DateFormat format = new SimpleDateFormat("hh:mm a");
    Date time_1 = format.parse(startTime);
    Date time_2 = format.parse(endTime);

    long timeDiff = time_2.getTime() - time_1.getTime();

    System.out.println("Time difference" + timeDiff);
}

代码中缺少什么?

更新

我发现了这一行的问题:

DateFormat 格式 = new SimpleDateFormat("hh:mm a");

如果我删除“a”。 而且价值真的很高。如果我将 12:00 设置为 13:00,则差异应该是 1。但我在这里得到了非常大的价值。我会用

【问题讨论】:

  • 输出是什么?
  • getTime 返回什么?
  • @seanAshmore getTime 以毫秒为单位返回时间。也许不是那么理想

标签: android date time timepicker


【解决方案1】:

现在唯一的问题是,如果我开始工作到很晚,然后 早上停止工作我会得到一个负值,但我猜 有针对另一个主题的修复。

应该这样做

String neg = "-"; 
    long timeDiff;  
    if(timeDiff.contains(neg)){ 
    timeDiff = time_1.getTime() - time_2.getTime(); }
else{ timeDiff =
    time_2.getTime() - time_1.getTime(); }
    System.out.println("Time difference" + timeDiff);

【讨论】:

  • 好的。我现在还看到我应该使用的 getHour 已被弃用,这是建议使用的 Calender 方法,我认为我会更改它
  • 我有一个大问题。当我计算时差时,我得到了正确的时间。但是当分钟达到 60 分钟时,小时应该增加 1 小时。所以这不好。
【解决方案2】:

负值的解决方案是使用数学库。 我确实喜欢这样:

String a =""+Math.abs(diff/(60*60*1000)%24);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多