使用Java标准库表达"明天上午10:30"的简单,简洁的方法

emm*_*mby 2 java datetime

仅使用标准的java 1.5调用,我正在寻找一种简洁而简单的方法来获取特定时间的Java Date对象,比如将来的上午10:30发生.这通常是明天上午10:30,但如果当前时间是早上8点,可能是今天上午10:30.

效率只是次要或第三方关注的问题.

看起来必须有一种更优雅的方式,而不是手动构建Calendar对象并在单独的方法调用中设置每个字段.

使用SimpleDateFormat可以很好地使用像"HH:mm"这样的格式字符串,但我没有看到一种聪明的方法让它适应下一个未来的上午10:30,而不仅仅是今天上午10:30.另外,那些try/catch块有点俗气.

真的没有简单的一两行表达方式吗?

sta*_*ker 5

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

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());
Run Code Online (Sandbox Code Playgroud)

你应该把它放到一个实用程序类中.