比较范围内的Joda LocalDateTime和DateTime

时间:2012-12-17 17:10:44

标签: java datetime jodatime

我正在尝试编写一个方法,该方法将使用LocalDateTimeDateTime(使用 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,我不认为这是有效的。两个不同月份和日期的开始/结束也是如此。有什么建议?提前谢谢。

2 个答案:

答案 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;