计算两次表示为long的时间差

时间:2016-11-18 22:03:47

标签: java time

我正在尝试计算两次之间的差异,它们在格式HHmm 24小时时间内表示为长。例如,下午4:30由长0430代表。

我很高兴差异在几分钟之内。

是否可以通过简单的计算来实现这一目标?我知道Java的Date类,但是我想避免为了按时计算而存储虚拟日期信息。

谢谢!

3 个答案:

答案 0 :(得分:2)

撇开这是一个非常非常糟糕的存储时间的事实,最简单的方法是将HHMM时间转换为自当天开始以来的分钟数:

long strangeTimeFormatToMinutes(long time) {
  long minutes = time % 100;
  long hours   = time / 100;
  return minutes + 60 * hours;
}

然后只使用普通的旧减法来获得差异。

您可能还想添加minuteshours在您期望的范围内的验证,即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)

Pad zeros

首先将整数转换为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 ) ;