0

我正在尝试编写一种方法,该方法将采用 aLocalDateTime和 a 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 和dateTime2013 年 1 月 1 日 00:01:00,我认为这不起作用。两个不同月份和日期的开始/结束也是如此。有什么建议么?提前致谢。

4

2 回答 2

1

您是否尝试过使用Duration类?

举个例子:

  Duration myDuration=new Duration(localDateTime.toDateTime(), dateTime);
  return Math.abs(myDuration.getMillis())<=30*60*1000;
于 2012-12-17T17:31:12.510 回答
0

你可以试试

return Math.abs(localDateTime.getLocalMillis() 
                - dateTime.toLocalDateTime().getLocalMillis()) < 30 * 60 * 1000;
于 2012-12-17T17:20:47.770 回答