我需要弄清楚如何存储12:45, 13:45
等时间..所以格式为HH:MM
在java中使用日期功能是不必要的,这些不会用于计算事件或任何事情的时间,我需要的只是执行13:45 - 12:45
之类的操作并得到输出,在这种情况下是{ {1}}我尝试用双打执行此操作,但遇到01:00
之类的问题,因为一小时内只有60分钟,预期输出应为13.45 + 00.35 = 13.80;
我正在试图弄清楚如何使用日期来做这件事,但请记住,此刻我不需要担心时区,日历日期等事情。我需要弄清楚如何制作数字表现得像小时和分钟。
很抱歉,如果这令人困惑。
答案 0 :(得分:1)
您应该创建一个对象。称之为HHMM。它看起来像这样
public class HHMM {
private int HH;
private int MM;
public HHMM(HH, MM) {
this.HH = HH
this.MM = MM
}
public toStr() {
return HH + ":" + MM
}
public minus(HHMM hhmm){
//write code here that subtracts the passed HHMM from this HHMM
}
//make a plus method too, and any other methods, etc.
}
答案 1 :(得分:1)
好的,这是我写的评论:
Calendar end = new GregorianCalendar(2013, 05, 05, 12, 40, 0);
Calendar start = new GregorianCalendar(2013, 05, 05, 12, 15, 0);
Calendar diff = end - start;
int minutes = diff.get(Calendar.Minutes);
int seconds = diff.get(Calendar.Seconds);
您不必使用日期部分来使用时间部分。
答案 2 :(得分:1)
Joda-Time已经在LocalTime课程中实现了您的目标:
LocalTime start = LocalTime.parse("12:45");
LocalTime end = LocalTime.parse("13:45");
Period period = new Period(start, end);
和
LocalTime start = new LocalTime(13, 45);
LocalTime later = start.plusMinutes(35);
答案 3 :(得分:0)
然后以分钟为单位存储所有数字。使用单个整数,您可以通过执行整数数学来进行简单的时间操作。如果您不关心它是哪一天,请将您的所有操作修改为1440(60 * 24):
示例:
int time = 600;
//Example time operation
time = (5000 + time) % 1440; //Day-insensitve
//Perform this check if you suspect time will become negative.
if(time < 0){
time = 1440 + time;
}
//Display time
int hours = time / 60; //Integer division of 60, get the maximum number of "perfect 60s" in your time component.
int minutes = time % 60; //Integer mod, get the remainder since the last "perfect 60"
System.out.println(String.format("%02d:%02d", hours, minutes));
请注意,保留构造的大部分时间只是将时间/日期或任何内容存储为基本单位的单个数值。例如:System.currentTimeMillis()
,它将时间作为自纪元以来的毫秒数。
如果只需要时间等简单的操作操作,则只需要了解如何将单个值解析为所需的组件(例如,秒,分钟,小时)。对这个数值的操作与传统数学一样。
答案 4 :(得分:0)
我使用一种方式在java中进行日期和小时的交易,我使用一个名为Joda-Time的框架,他非常好。只有你下载了。 Jar,并研究如何使用més,years和days进行操作的方法。使用这个框架vc可以通过执行更复杂的代码来节省很多麻烦。