我正在尝试编写一个方法,该方法将使用LocalDateTime
和DateTime
(使用 Joda 1.3 )并确定它们是否在彼此的30分钟内。这是我能想到的最好的,但我知道必须有更好/更清洁/更有效的方式:
public boolean isWithin30MinsOfEachOther(LocalDateTime localDateTime, DateTime dateTime) {
return (
localDateTime.getYear() == dateTime.getYear() &&
localDateTime.getMonthOfYear() == dateTime.getMonthOfYear() &&
localDateTime.getDayOfMonth() == dateTime.getDayOfMonth() &&
localDateTime.getHourOfDay() == dateTime.getHourOfDay() &&
Math.abs((localDateTime.getMinuteOfHour() - dateTime.getMinuteOfHour())) <= 30
);
)
更不用说如果localDateTime
是2012年12月31日23:58:00而dateTime
是2013年1月1日00:01:00,我不认为这是有效的。两个不同月份和日期的开始/结束也是如此。有什么建议?提前谢谢。
答案 0 :(得分:1)
您是否尝试过使用Duration课程?
举个例子:
Duration myDuration=new Duration(localDateTime.toDateTime(), dateTime);
return Math.abs(myDuration.getMillis())<=30*60*1000;
答案 1 :(得分:0)
你可以尝试
return Math.abs(localDateTime.getLocalMillis()
- dateTime.toLocalDateTime().getLocalMillis()) < 30 * 60 * 1000;