如何使用Java中的Joda日期/时间库获取“今天”的日期/时间范围?
假设这是您以Joda时间获取当前时间的方式:
DateTime now = new DateTime();
如何计算变量和 ? 的值dateTimeAtStartOfToday
dateTimeAtEndOfToday
我试图做的是生成一些SQL来查找和之间发生的所有事务。startOfToday
endOfToday
假设这是您以Joda时间获取当前时间的方式:
DateTime now = new DateTime();
如何计算变量和 ? 的值dateTimeAtStartOfToday
dateTimeAtEndOfToday
我试图做的是生成一些SQL来查找和之间发生的所有事务。startOfToday
endOfToday
我会使用:
LocalDate today = now.toLocalDate();
LocalDate tomorrow = today.plusDays(1);
DateTime startOfToday = today.toDateTimeAtStartOfDay(now.getZone());
DateTime startOfTomorrow = tomorrow.toDateTimeAtStartOfDay(now.getZone());
然后检查是否有任何特定时间。startOfToday <= time < startOfTomorrow
当然,这部分取决于数据库中存储的内容 - 以及您感兴趣的时区。
这效果更好,事实证明DateTime有一个名为toInterval的方法,它可以做到这一点(从午夜到午夜)。在我的测试中,DST 转换似乎没有问题。
DateTime now = new DateTime();
DateTime startOfToday = now.toDateMidnight().toInterval().getStart();
DateTime endOfToday = now.toDateMidnight().toInterval().getEnd();
System.out.println( "\n" + now + "\n" + startOfToday + "\n" + endOfToday + "\n" );
JODA看起来经过深思熟虑。