How to round time to the nearest quarter hour in java?

后端 未结 14 2718
小鲜肉
小鲜肉 2020-11-27 14:59

Given today\'s time e.g. 2:24PM, how do I get it to round to 2:30PM?

Similarly if the time was 2:17PM, how do I get it to round to 2:15PM?

14条回答
  •  臣服心动
    2020-11-27 15:22

    Using some code on I found on Stackoverflow, I have created the following code. It will output for every minute the quarter it will be rounded to.

    import java.time.LocalDateTime;
    import java.time.format.DateTimeFormatter;
    
    DateTimeFormatter Datum_Format = DateTimeFormatter.ofPattern("HH:mm");
    
    LocalDateTime time = LocalDateTime.now();
    for(int i=0; i<=59; i++) {
      time = time.withMinute(i);
      int Minute = time.getMinute();
      int Quarter = 15 * (int) Math.round(Minute / 15);
      if (Quarter == 60) { 
        Time2 = time.plusHours(1);
        Time2 = Time2.withMinute(0); 
        LOG.info (Datum_Format.format(time) + "," + Datum_Format.format(Time2));
      }
      else {
        Time2 = time; 
        Time2 = Time2.withMinute(Quarter); 
        LOG.info (Datum_Format.format(time) + "," + Datum_Format.format(Time2));
      }
    }
    

    As I output the code to a console, you will have to replace the LOG.info with something like System.out.println.

    Result:

    2016-08-16 15:14:31 INFO 15:05,15:00
    2016-08-16 15:14:31 INFO 15:06,15:00
    2016-08-16 15:14:31 INFO 15:07,15:00
    2016-08-16 15:14:31 INFO 15:08,15:15
    2016-08-16 15:14:31 INFO 15:09,15:15
    2016-08-16 15:14:31 INFO 15:10,15:15

提交回复
热议问题