Joda DateTime指定的小时:分钟,但比现在晚

时间:2014-03-28 14:38:44

标签: java datetime jodatime

我有一段时间的格式" HH:mm"我想在不久的将来获得Joda的DateTime。例如,如果现在是3月28日的16:33,并且我给了字符串"5:10",那么我想要得到一个DateTime,即#34; 2014-03-29 05:10&#34 ;即明天凌晨5点,而不是今天凌晨5点。

我试图通过单行代码来实现这一点(因为Joda适合单行),就是这种风格:

String input = "16:33";
DateTime dt = ... // Do fancy Joda one-liner
assert dt.isAfterNow() == true;

听起来非常简单,我可以在大约20行代码中完成,我只是认为必须有一种聪明的方法来做到这一点。

但我也会对类似案件的单行程表示满意:

int hour = 16;
int minute = 33;
DateTime dt = ... // Do fancy Joda one-liner
assert dt.isAfterNow() == true;

1 个答案:

答案 0 :(得分:1)

嗯,听起来将它分成更合适的类型是个好主意:

LocalTime userTime = ...; // Parse the user input
DateTime now = DateTime().now();
LocalDate today = now.toLocalDate();
LocalDate resultDate = now.toLocalTime().isBefore(userTime) ? today : today.plusDays(1);
DateTime result = resultDate.toDateTime(userTime, now.getTimeZone());