Java时间计算

标签 java

所以我的方法接收一个 24 小时格式的时间(“HH:MM:SS”)并返回一个字符串作为时差。如果是本地时间下午 2:00,我应该能够发送“16:30:00”(下午 4:30)并获得输出“2 小时 30 分钟”。但是代码有一些问题,我只是一个初学者,我需要帮助来修复它。

问题是如果时间是下午 4:40,我发送了“17:00:00”(5:00PM),它会返回消息: 12 小时 20 分钟,而不是 0 小时 20 分钟。 另一个问题是,如果我在当前时间发送它,它会在“12 小时”后返回,而不是应该的 24 小时。

请记住,我只是 Java 的初学者,数学真的不是我的专长,因此非常感谢任何帮助。谢谢。

private static String timeUntil(String distanceTime) {
String returnMsg = null;
try {
    SimpleDateFormat sdfDate = new SimpleDateFormat("hh:mm:ss");
    Date now = new Date();
    java.text.DateFormat df = new java.text.SimpleDateFormat("hh:mm:ss");
    Date date1 = df.parse(sdfDate.format(now));
    Date date2 = df.parse(distanceTime);
    long diff = date2.getTime() - date1.getTime();
    int timeInSeconds = (int) (diff / 1000);
    int hours, minutes;

    hours = timeInSeconds / 3600;
    timeInSeconds = timeInSeconds - (hours * 3600);
    minutes = timeInSeconds / 60;

    if (hours >= 0) {
    returnMsg = hours + " hours" +
            "\n" + minutes + " mins";
    } else {
    returnMsg = minutes + " mins";
    }
} catch (Exception e) {
    e.printStackTrace();
}
return returnMsg;
}

最佳答案

在您的日期格式中,hh 用于 12 小时制。将 HH 用于 24 小时制:

new SimpleDateFormat("HH:mm:ss");

关于Java时间计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14884680/

相关文章:

java - Actor 列表到 Collection

Java:GridBagLayout 相邻 x 网格之间不需要的间距

java - 如何进行 Rest API 调用以在 Java 中启动可执行文件

java - 使用 JPA (Hibernate) 获取旧实体

java - Android - 更改应用程序签名( keystore + key )

java - Java 中的排序变量和否定变量

java - 使用 JAXB 注释、Jackson 和 Spring 生成 JSON

java - 如何打印不匹配的字符串

java - 如何在 View 持有者中发送然后从 firebase 接收数据

java - 在 MySQL 表中存储 Unicode 和特殊字符