有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JodaTime四舍五入到最近的一刻钟

如果时间是10:36,我想把时间缩短到10:30。如果时间是1050,我想把时间四舍五入到10:45。等我不知道该怎么做。有什么想法吗


共 (3) 个答案

  1. # 1 楼答案

    public static LocalTime roundDown(LocalTime time, int toMinuteInterval) {
        int slotNo = (int)(time.getMillisOfDay() / ((double)toMinuteInterval * 60 * 1000));
        int slotsPerHour = 60 / toMinuteInterval;
        int h = slotNo / slotsPerHour;
        int m = toMinuteInterval * (slotNo % slotsPerHour);
        return new LocalTime(h, m);
    }
    

    仅当toMinuteInterval是60倍(例如10、15、30等)时有效

  2. # 2 楼答案

    谢谢你的回复。决定走这条路,不介绍JodaTime。在这个答案中How to round time to the nearest quarter hour in java?

        long timeMs = System.currentTimeMillis();       
        long roundedtimeMs = Math.round( (double)( (double)timeMs/(double)(15*60*1000) ) ) * (15*60*1000);
    
        Date myDt = new Date(roundedtimeMs);
    
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(myDt);
    
        if(calendar.before(new Date())) {
            calendar.add(Calendar.MINUTE, -15);
        }
    
        System.out.println(calendar.getTime());
    
  3. # 3 楼答案

    这个怎么样

    public static LocalTime roundToQuarterHour(LocalTime time) {
      int oldMinute = time.getMinuteOfHour();
      int newMinute = 15 * (int) Math.round(oldMinute / 15.0);
      return time.plusMinutes(newMinute - oldMinute);
    }
    

    (由于有一个withMinuteOfHour方法,它可能看起来有点过于复杂了,但请记住,我们可能会将其调整到60,而withMinuteOfHour(60)是无效的。)