如何以一刻钟为周期打印时间(hh:mm)?

How to print times (hh:mm) in a quarter-hour cycle?

我基本上需要以 hh:mm 格式打印从 00:00 到 23:45 的一天中的每刻钟(所以 96 个不同的时间)以创建一个 html报告。是否有标准库可以做到这一点?或者换个方式?

PrintStream fillStatus = new PrintStream("Report.html");
            for (int(int i=0; i <= 116; i++) {
                jobStatus[] = FileMonitorLog.getStatusOfJob(i) 
                            
                        
                fillStatus.println("<tr >");
                fillStatus.println("<td>"+hh:mmTime+"</td>");
                
                for (quarter=0; quarter <= 96; quarter++) {
                    fillStatus.println("<td>"+getHtmlStatus(jobStatus[quarter])."</td>");

我不知道官方方法,但是两个 for 循环很快。

您当然可以使用日期和时间库做很多复杂的事情,但是既然可以轻松完成,为什么要让它变得困难呢?

在线查看:https://ideone.com/swFbz2

        String[] quarters = {"00", "15", "30", "45"};
        ArrayList<String> hours = new ArrayList<>(24*4);
        for(int i = 0; i < 24; i++) {
            for(int j = 0; j < 4; j++) {
                hours.add((i < 10 ? "0" + i : i) + ":" + quarters[j]);
            }
        }
        ArrayList<String> output = new ArrayList<>();
        for (int i=0; i <= 10; i++) {
 
                output.add("<tr >");
                output.add("  <td>thingy/td>");
 
                for (int quarter=0; quarter < 24*4; quarter++) {
                    output.add("  <td>"+hours.get(quarter)+" jobstatus is perfectly fine.... believe me.</td>");
                }
                output.add("</tr>");
        }
        //System.out.println(String.join("\n",hours));
        System.out.println(String.join("\n", output));

可以使用 java.time.LocalTime:

var time = LocalTime.MIN;
do {
    System.out.println(time);
    time = time.plusMinutes(15);
} while (!time.equals(LocalTime.MIN));

也可以用for循环来完成,只是考虑到LocalTime不接受24:00,所以23:45 + 0:15导致00:00


如果秒和秒的小数部分为零,LocalTime.toString() 使用的默认格式是 HH:MMDateTimeFormat 可用于使用不同的格式来格式化齿。