我正在尝试计算两次之间的差异,它们在格式HHmm 24小时时间内表示为长。例如,下午4:30由长0430代表。
我很高兴差异在几分钟之内。
是否可以通过简单的计算来实现这一目标?我知道Java的Date类,但是我想避免为了按时计算而存储虚拟日期信息。
谢谢!
答案 0 :(得分:2)
撇开这是一个非常非常糟糕的存储时间的事实,最简单的方法是将HHMM时间转换为自当天开始以来的分钟数:
long strangeTimeFormatToMinutes(long time) {
long minutes = time % 100;
long hours = time / 100;
return minutes + 60 * hours;
}
然后只使用普通的旧减法来获得差异。
您可能还想添加minutes
和hours
在您期望的范围内的验证,即0-59和0-23。
答案 1 :(得分:1)
您提到您不想使用Date类,因为它要求您使用虚拟日期。 LocalTime类不需要。
LocalTime start = LocalTime.of(6,15,30,200); // h, m, s, nanosecs
LocalTime end = LocalTime.of(6,30,30,320);
Duration d = Duration.between(start, end);
System.out.println(d.getSeconds()/60);
答案 2 :(得分:0)
首先将整数转换为4个字符的字符串,使用前导零填充。
例如,430
变为0430
并解析为04:30
。或者,15
变为0015
并解析为午夜过后的四分之一00:15
。
String input = String.format( "%04d", yourTimeAsInteger );
LocalDate
LocalTime
类表示没有日期且没有时区的时间值。
DateTimeFormatter f = DateTimeFormatter.ofPattern( "HHmm" );
LocalTime ld = LocalTime.parse( input , f ) ;