java - 用于向 "HH:MM"字符串添加更多分钟的代码

标签 java time

我几乎完成了代码,但我仍然需要一些帮助。此代码通过将 分钟 添加到 startTime 来计算 newTime。分钟的值可能大于 60。问题是在当前示例中它必须输出“00:10”,但它输出“23:70”...

    String startTime = "23:40";
    int minutes = 30;
    String[] hm = startTime.split(":");
    int h = minutes / 60 + Integer.parseInt(hm[0]);
    int m = minutes % 60 + Integer.parseInt(hm[1]);
    if (m<0) {
        if (h==0) 
            h=23;
        else 
            h = h-1;
        m = 60+m;
    }
    String newTime = String.format("%02d", h)+":"+String.format("%02d", m); 
    System.out.println(newTime);

最佳答案

怎么样:

import java.util.*;
import java.util.regex.*;

...

String startTime = "23:40";
int additionalMinutes = 30;

Pattern pat = Pattern.compile( "(\\d+):(\\d+)" );
Matcher x = pat.matcher(startTime);
if (x.matches())
{
    int h = Integer.parseInt(x.group(1));
    int m = Integer.parseInt(x.group(2));

    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR, h);
    cal.set(Calendar.MINUTE, m);
    cal.add(Calendar.MINUTE, additionalMinutes);

    h = cal.get(Calendar.HOUR);
    m = cal.get(Calendar.MINUTE);

    System.out.println(
            "Start: " + startTime + 
            " + " + additionalMinutes + " minutes = " +
            h + ":" + m );
}
else
{
    /* bad format */
}

输出:开始:23:40 + 30 分钟 = 0:10

关于java - 用于向 "HH:MM"字符串添加更多分钟的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917551/

相关文章:

如果流不返回任何结果,Java 8 将抛出异常

Java - DB2 连接错误 SQL30082N "USERNAME AND/OR PASSWORD INVALID"

java - 更新应用程序(Java)

python - 如何计算 Python 中一批代码的执行时间?

java - 一次运行多个启动配置

java - hazm 库的 ValueError : Could not find stanford-postagger. jar 文件 - python NLP

java - 计算java中HH/MM/SS格式的两个日期和时间之间的时间差?

database - 在 coldfusion 中 x 时间后自动更新或删除记录

c - 找出是什么减慢了 C 程序的工具?

c# - 计算 for 循环的大致运行时间