Как сравнить сырое время в Java? - PullRequest
4 голосов
/ 17 мая 2011

Например, предположим, у меня есть

String endTime = "16:30:45";

Как бы я определил, сейчас ли это до этого времени?

Ответы [ 4 ]

15 голосов
/ 17 мая 2011

Сначала вам нужно разобрать это:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss")
Date date = sdf.parse(endTime);

Затем вы можете создать календарь для сравнения времени:

Calendar c = Calendar.getInstance();
c.setTime(date);
Calendar now = Calendar.getInstance();
if (now.get(Calendar.HOUR_OF_DAY) > c.get(Calendar.HOUR_OF_DAY) .. etc) { .. }

В качестве альтернативы вы можете создать календарь, например now и задайте поля HOUR, MINUTE и SECOND с полями из нового календаря.

С помощью joda-time вы можете сделать нечто подобное.

new DateMidnight().withHour(..).widthMinute(..).isBefore(new DateTime())
2 голосов
/ 17 мая 2011
SimpleDateFormat df = new SimpleDateFormat("HH:mm:ss");

Date d1=df.parse(endTime);
Date d2=df.parse(startTime);

long d1Ms=d1.getTime();
long d2Ms=d2.getTime();

if(d1Ms < d2Ms)
{
   //doSomething
}
else
{
   // something else
}
1 голос
/ 17 мая 2011

Поскольку в Java нет встроенной поддержки значений чистого времени (только объединенные значения времени и даты), вам, вероятно, лучше выполнить сравнение самостоятельно. Если время отформатировано как ЧЧ: мм: сс, это должно сработать:

boolean beforeNow = 
    endTime.compareTo(
        new SimpleDateFormat("HH:mm:ss").format(new Date())) < 0;

Код не обрабатывает изменения даты. Я не уверен, что вы хотите обработать 23:00 до или после 01:00, но код учитывает оба раза в одну и ту же дату, например, 23:00 - после 01:00.

0 голосов
/ 22 января 2015

Местное время

До появления Java 8 и его пакета java.time в Java отсутствовало какое-либо понятие "местного времени".Это означает, что время суток отделено от любой даты и любого часового пояса.Местное время - это просто представление о времени суток, не привязанное к временной шкале истории.

И библиотека Joda-Time, и пакет java.time в Java 8 предлагают * 1006.* класс.

Часовой пояс

Часовой пояс имеет решающее значение для определения местного времени «сейчас».Очевидно, что «время настенных часов» в Париже отличается от времени в Монреале в тот же момент.

Если вы пропустите часовой пояс, будет применен текущий часовой пояс по умолчанию для вашей JVM.Лучше указать, чем неявно полагаться на текущее значение по умолчанию.

Joda-Time

Пример кода в Joda-Time 2.7.

LocalTime then = new LocalTime( "16:30:45" );
Boolean isNowBefore = LocalTime.now( DateTimeZone.forID( "America/Montreal" ) ).isBefore( then );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...