Подтвердить что ты не робот

Как вы получаете диапазон даты и времени для "сегодня" с использованием библиотеки даты и времени Joda в Java?

Предполагая, что вы получаете текущее время в Joda time:

DateTime now = new DateTime();

Как вы вычисляете значения для переменных dateTimeAtStartOfToday и dateTimeAtEndOfToday?

То, что я пытаюсь сделать, - это сгенерировать некоторый SQL, чтобы выполнить поиск всех транзакций, которые произошли между startOfToday и endOfToday.

4b9b3361

Ответ 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