Java 向“添加更多分钟”的代码;HH:MM";一串
我几乎完成了代码,但仍然需要一些帮助。此代码根据将Java 向“添加更多分钟”的代码;HH:MM";一串,java,time,Java,Time,我几乎完成了代码,但仍然需要一些帮助。此代码根据将minutes添加到startTime计算newTime。minutes的值可能大于60。问题是,在当前示例中,它必须输出“00:10”,但它输出“23:70” String startTime=“23:40”; 整数分钟=30; 字符串[]hm=startTime.split(“:”); inth=分钟/60+整数.parseInt(hm[0]); int m=minutes%60+整数.parseInt(hm[1]); 如果(m我建议将自午夜
minutes
添加到startTime
计算newTime
。minutes
的值可能大于60。问题是,在当前示例中,它必须输出“00:10”,但它输出“23:70”
String startTime=“23:40”;
整数分钟=30;
字符串[]hm=startTime.split(“:”);
inth=分钟/60+整数.parseInt(hm[0]);
int m=minutes%60+整数.parseInt(hm[1]);
如果(m我建议将自午夜以来的总分钟数作为单个值计算,然后添加所需数量,然后重新计算得出的小时和分钟数:
String startTime = "23:40";
int minutes = 30;
String[] hm = startTime.split(":");
int h = Integer.parseInt(hm[0]);
int m = Integer.parseInt(hm[1]);
int t = h * 60 + m; // total minutes
t += minutes; // add the desired offset
while (t < 0) { // fix `t` so that it's never negative
t += 1440; // 1440 minutes in a day
}
int nh = (t / 60) % 24; // calculate new hours
int nm = t % 60; // calculate new minutes
String newTime = String.format("%02d:%02d", nh, nm);
String startTime=“23:40”;
整数分钟=30;
字符串[]hm=startTime.split(“:”);
inth=Integer.parseInt(hm[0]);
int m=Integer.parseInt(hm[1]);
int t=h*60+m;//总分钟数
t+=分钟;//添加所需的偏移量
而(t<0){//fix`t`使其永远不为负
t+=1440;//每天1440分钟
}
int nh=(t/60)%24;//计算新的小时数
int nm=t%60;//计算新的分钟数
String newTime=String.format(“%02d:%02d”,nh,nm);
绝对不应该将minutes
变量添加到h
的计算中-它们是不兼容的单位。我建议将自午夜以来的总分钟数作为单个值进行计算,然后添加所需的量,然后重新计算得到的小时数和分钟数:
String startTime = "23:40";
int minutes = 30;
String[] hm = startTime.split(":");
int h = Integer.parseInt(hm[0]);
int m = Integer.parseInt(hm[1]);
int t = h * 60 + m; // total minutes
t += minutes; // add the desired offset
while (t < 0) { // fix `t` so that it's never negative
t += 1440; // 1440 minutes in a day
}
int nh = (t / 60) % 24; // calculate new hours
int nm = t % 60; // calculate new minutes
String newTime = String.format("%02d:%02d", nh, nm);
String startTime=“23:40”;
整数分钟=30;
字符串[]hm=startTime.split(“:”);
inth=Integer.parseInt(hm[0]);
int m=Integer.parseInt(hm[1]);
int t=h*60+m;//总分钟数
t+=分钟;//添加所需的偏移量
而(t<0){//fix`t`使其永远不为负
t+=1440;//每天1440分钟
}
int nh=(t/60)%24;//计算新的小时数
int nm=t%60;//计算新的分钟数
String newTime=String.format(“%02d:%02d”,nh,nm);
您绝对不应该将minutes
变量添加到h
的计算中-它们是不兼容的单位。如何:
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
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为什么你有代码来处理负分钟?有00:-1
有意义吗?如果有,你可以有-1:00
?或者-1:-1
?他真正的问题是加法,而不是字符串conversion@Peter劳瑞:代码处理负分钟数,因为val分钟的ue可能是,例如-30。在这种情况下,我需要通过根据开始时间移动它来正确计算新时间。@YouKuper加法应该在您将hh:mm
转换为“午夜后的分钟”后进行,根据我的回答。这样你永远不会得到一个负数。为什么你有代码来处理负数分钟?有00:-1
有意义吗?如果有,你可以有-1:00
?或者-1:-1
?他的真正问题是加法,而不是字符串conversion@Peter劳瑞:代码处理负分钟数,贝克因为分钟的值可能是,例如-30。在这种情况下,我需要通过根据开始时间移动它来正确计算新时间。@YouKuper根据我的回答,加法应该在您将hh:mm
转换为“午夜后的分钟数”后进行。这样您就永远不会得到负数。