Как получить сопоставимую дату разбора "13:00"? - PullRequest
2 голосов
/ 11 ноября 2011

Я пытался с:

new Date("13:00")

Все, что меня волнует, это время суток и то, что при сравнении новая дата ("12:00") меньше новой даты ("13:00"). Для этого нет библиотеки?

Ответы [ 3 ]

2 голосов
/ 11 ноября 2011

Если вы создаете две даты и устанавливаете только часы и минуты (например, анализируя с помощью шаблона формата времени или устанавливая поля в календаре), вы можете сравнить их.

java.util.Date предоставляет методы до и после для сравнения дат. Он также реализует Comparable # compareTo , поэтому вы можете проверить до / равно / после в одном вызове.

    // get dates using format/parse
    DateFormat format = new SimpleDateFormat("HH:mm");
    Date date1 = format.parse("13:00");
    Date date2 = format.parse("13:00");

    // use Date comparison methods
    boolean before = date1.before(date2);
    System.err.println(before);

    // use compareTo
    int compare = date1.compareTo(date2);
    System.err.println(compare);

    // get dates using Calendar
    Calendar calendar = Calendar.getInstance();
    calendar.set(Calendar.HOUR, 12);
    calendar.set(Calendar.MINUTE, 0);
    date1 = calendar.getTime();
    calendar.set(Calendar.HOUR, 13);
    date2 = calendar.getTime();
2 голосов
/ 11 ноября 2011

Если время указано в формате «ЧЧ: мм», вы можете просто сравнить строки.

String time1 = "12:00";
String time2 = "13:00";
int compared = time1.compareTo(time2); // compared == -1
1 голос
/ 11 ноября 2011

JodaTime очень популярен в Java.Взгляните на LocalTime .

...