48小时24小时潜水

时间:2017-08-28 19:49:54

标签: java time

我将24小时工作分为48个时段。所以我像这样硬编码: (java code)

private static void createMap() {
    timeSlotMap.put(0, "0:30");

    timeSlotMap.put(1, "01:00");
    timeSlotMap.put(2, "01:30");

    timeSlotMap.put(3, "02:00");
    timeSlotMap.put(4, "02:30");
    ...
    ...
    timeSlotMap.put(45, "23:00");
    timeSlotMap.put(46, "23:30");

    timeSlotMap.put(47, "24:00");
}

有更好的方法吗?

由于

2 个答案:

答案 0 :(得分:3)

使用LocalTime的另一种方式:

LocalTime time = LocalTime.MIDNIGHT;
int minutesToAdd = 30;
Map<Integer, String> times = new TreeMap<>();

for(int i = 1; i < 48; i++){
    times.put(i - 1,time.plusMinutes(minutesToAdd * i).toString());
}

times.put(47, "24:00");

答案 1 :(得分:1)

当然,这就是循环的用途。使第一个参数成为循环索引,并从第一个参数构造第二个参数,例如,使用String.format函数:

        private static void createMap() {
            for (int i = 0; i < 48; i++) {
                int t = (i + 1) * 30;
                timeSlotMap.put(i, String.format("%02d:%02d", t / 60, t % 60));
            }
        }