繁体   English   中英

具有指定小时:分钟的Joda日期时间,但晚于现在

[英]Joda DateTime with specified hour:minute, but later than now

我有一段时间使用“ HH:mm”格式的字符串,我想在不久的将来获取Joda的DateTime。 例如,如果现在是3月28日的16:33,并且我给出字符串"5:10" ,那么我想获取一个DateTime为“ 2014-03-29 05:10”,即明天在凌晨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;

好吧,将其分成更合适的类型似乎是一个好主意:

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());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM