代码之家  ›  专栏  ›  技术社区  ›  emmby

使用Java标准库简单、简洁地表达“明天上午10:30”

  •  2
  • emmby  · 技术社区  · 14 年前

    只使用标准的Java1.5调用,我正在寻找一种简洁而简单的方法来获取特定时间的JavaDate对象,比如说未来的10:30。这通常是明天上午10:30,但如果现在是上午8点,可能是今天上午10:30。

    效率只是第二个或第三个问题。

    真的没有简单的一行或两行的方式来表达这一点吗?

    2 回复  |  直到 14 年前
        1
  •  5
  •   stacker    14 年前

    标准API中没有方便的方法,您需要一个类似

    Calendar cal = Calendar.getInstance();
    Date today = cal.getTime();
    cal.set(Calendar.HOUR, 10);
    cal.set(Calendar.MINUTE,30);
    cal.set(Calendar.SECOND,0);
    cal.set(Calendar.AM_PM, Calendar.AM);
    
    Date next = cal.getTime();
    if (today.after(next)) {
        cal.add(Calendar.DAY_OF_MONTH, 1);
    }
    System.out.println(cal.getTime());
    

    你应该把它放到一个实用类中。

        2
  •  1
  •   Jon Freedman    14 年前

    你可能还想看看 Joda

    final LocalDateTime now = new LocalDateTime().withSecondOfMinute(0).withMillisOfDay(0);
    final LocalDateTime tenThirty;
    if (now.getHourOfDay() <= 10 && now.getMinuteOfHour() <= 30) {
        tenThirty = now.withHourOfDay(10).withMinuteOfHour(30);
    } else {
        tenThirty = now.plusDays(1).withHourOfDay(10).withMinuteOfHour(30);
    }