在Java中将时间分成相等的间隔

时间:2015-03-13 08:45:58

标签: java

必须将开始时间和结束时间分成相等的间隔。

E.g。

开始时间:上午10点, 结束时间 14PM, 分段时间: 30分钟

输出必须是这样的 -

:::: 输出 :::

[{时间:" 10:00"},{时间:" 10:30"},{时间:" 11:00"},{时间:" 11:30"},{时间:" 12:00"},{时间:" 12:30"},{时间:&#34 ; 13:00"},{时间:" 13:30"},{时间:" 14:00"}]

提前感谢大家。

1 个答案:

答案 0 :(得分:2)

首先,将小时数转换为分钟数。

10AM = 10 * 60 minutes
2PM or 14h = 14 * 60 minutes

然后,为了将分钟转换回几小时:

minutes / 60 gives the number of hours
minutes % 60 gives the number of the minutes in the last hour.

如果您希望始终显示2位数的小时/分钟,并最终填充前导零,请使用:

String result = String.format("%02d", minutes/60);

2表示您需要2个数字,而0表示您使用零填充)

也就是说,有两种方式从10*60转到14*60,步骤为30 minutes

最直观的:while循环

public static void interval(int begin, int end, int interval) {
  int time = begin;
  while (time <= end) {
    System.out.println(String.format("%02d:%02d", time / 60, time % 60));
    time += interval;
  }
}

但我不喜欢while循环。如果你做错了(或输入数据错误),它会以无限循环结束。

另一种方式:如您所知,开始,结束和步骤,请使用for循环:

public static void interval2(int begin, int end, int interval) {
  for (int time = begin; time <= end; time += interval) {
    System.out.println(String.format("%02d:%02d", time / 60, time % 60));
  }
}

测试

interval2(10 * 60, 14 * 60, 30);

结果

10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00