Как вы получаете диапазон даты и времени для "сегодня" с использованием библиотеки даты и времени Joda в Java?
Предполагая, что вы получаете текущее время в Joda time:
DateTime now = new DateTime();
Как вы вычисляете значения для переменных dateTimeAtStartOfToday
и dateTimeAtEndOfToday
?
То, что я пытаюсь сделать, - это сгенерировать некоторый SQL, чтобы выполнить поиск всех транзакций, которые произошли между startOfToday
и endOfToday
.
Ответы
Ответ 1
Я бы использовал:
LocalDate today = now.toLocalDate();
LocalDate tomorrow = today.plusDays(1);
DateTime startOfToday = today.toDateTimeAtStartOfDay(now.getZone());
DateTime startOfTomorrow = tomorrow.toDateTimeAtStartOfDay(now.getZone());
Затем проверьте, если startOfToday <= time < startOfTomorrow
для любого конкретного времени.
Конечно, это отчасти зависит от того, что хранится в базе данных - и в каком часовом поясе вас интересует.
Ответ 2
Это работает лучше, получается, что 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 выглядит очень хорошо продуманным.
Ответ 3
if((sinceDate.getDayOfYear() == now.getDayOfYear()) && (sinceDate.year() == now.year()))
//yep, do something today;
работает для меня.
Ответ 4
import org.joda.time.DateTime;
import org.joda.time.DateTimeMidnight;
DateTime dateTimeAtStartOfToday = new DateTime(new DateTimeMidnight());
DateTime dateTimeAtEndOfToday = new DateTime((new DateTimeMidnight()).plusDays(1));
Ответ 5
Это работает...
DateTime dt = new DateTime();
DateMidnight dtStartDate = dt.toDateMidnight();
DateMidnight dtEndDate = dt.plusDays( 1 ).toDateMidnight();
System.out.println( dt + "\n" + dtStartDate + "\n" + dtEndDate );
... но что касается SQL, я склонен использовать BETWEEN как предложение where, а не > и <= stuff