Mor*_*ris 21 java datetime jodatime
DateTime now = new DateTime();
Run Code Online (Sandbox Code Playgroud)
如何计算变量的值dateTimeAtStartOfToday和dateTimeAtEndOfToday?
我正在试图做的是产生一些SQL做的有间发生的所有交易记录的查询startOfToday和endOfToday.
Jon*_*eet 35
我会用:
LocalDate today = now.toLocalDate();
LocalDate tomorrow = today.plusDays(1);
DateTime startOfToday = today.toDateTimeAtStartOfDay(now.getZone());
DateTime startOfTomorrow = tomorrow.toDateTimeAtStartOfDay(now.getZone());
Run Code Online (Sandbox Code Playgroud)
然后检查是否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" );
Run Code Online (Sandbox Code Playgroud)
JODA看起来非常深思熟虑.