public static ZonedDateTime getNextSchedule() {
    ZonedDateTime next_schedule;

    // Determine type of schedule
    if (ConfigHandler.backupInterval > 0) // Interval
    {
      next_schedule =
          ZonedDateTime.ofInstant(
              Instant.ofEpochMilli(
                  System.currentTimeMillis() + (ConfigHandler.backupInterval * 60 * 1000)),
              ZoneId.systemDefault());
    } else // Schedule
    {
      if (ConfigHandler.backupSchedule.length == 0) {
        return null;
      }

      LocalTime now = LocalTime.now();
      LocalTime next_time = null;
      LocalDate day = LocalDate.now();
      TreeSet<LocalTime> times = new TreeSet<>();

      for (String s : ConfigHandler.backupSchedule) {
        times.add(LocalTime.parse(s, DateTimeFormatter.ofPattern("H:mm")));
      }

      for (LocalTime t : times) // try to find next scheduled time for today
      {
        if (t.compareTo(now) == 1) {
          next_time = t;
          break;
        }
      }

      if (next_time
          == null) // if we couldn't find one for today take the first schedule time for tomorrow
      {
        day = day.plusDays(1);
        next_time = times.first();
      }

      next_schedule = ZonedDateTime.of(day, next_time, ZoneId.systemDefault());
    }

    return next_schedule;
  }
Ejemplo n.º 2
0
  // -----------------------------------------------------------------------
  @SuppressWarnings("deprecation")
  public void testCompareTo() {
    LocalTime test1 = new LocalTime(10, 20, 30, 40);
    LocalTime test1a = new LocalTime(10, 20, 30, 40);
    assertEquals(0, test1.compareTo(test1a));
    assertEquals(0, test1a.compareTo(test1));
    assertEquals(0, test1.compareTo(test1));
    assertEquals(0, test1a.compareTo(test1a));

    LocalTime test2 = new LocalTime(10, 20, 35, 40);
    assertEquals(-1, test1.compareTo(test2));
    assertEquals(+1, test2.compareTo(test1));

    LocalTime test3 = new LocalTime(10, 20, 35, 40, GregorianChronology.getInstanceUTC());
    assertEquals(-1, test1.compareTo(test3));
    assertEquals(+1, test3.compareTo(test1));
    assertEquals(0, test3.compareTo(test2));

    DateTimeFieldType[] types =
        new DateTimeFieldType[] {
          DateTimeFieldType.hourOfDay(),
          DateTimeFieldType.minuteOfHour(),
          DateTimeFieldType.secondOfMinute(),
          DateTimeFieldType.millisOfSecond(),
        };
    int[] values = new int[] {10, 20, 30, 40};
    Partial p = new Partial(types, values);
    assertEquals(0, test1.compareTo(p));
    assertEquals(0, test1.compareTo(new TimeOfDay(10, 20, 30, 40)));
    try {
      test1.compareTo(null);
      fail();
    } catch (NullPointerException ex) {
    }
    //        try {
    //            test1.compareTo(new Date());
    //            fail();
    //        } catch (ClassCastException ex) {}
  }