Разница во времени в java jsf - PullRequest
0 голосов
/ 26 января 2012

Я сохранил время с форматом "20:01:00" как двойное.

Могу ли я вычислить разные 2 из вышеуказанного времени.

такой, что variable1 = 18:20:00 Переменная2 = 19: 22: 00

Таким образом, если переменная1 больше переменной2, она выполнит некоторое действие.

Как я могу сделать это в Java?

Ответы [ 3 ]

2 голосов
/ 26 января 2012

Если вы получаете время в указанном вами формате строки, вы можете использовать SimpleDateFormat для создания объекта Date, как упомянуто выше, а затем использовать методы, такие как compareTo (Date anotherDate) или даже просто вычитать один раз из другого. Что-то вроде:

DateFormat df = new SimpleDateFormat("hh:mm:ss");
Date date1 = df.parse(stringDate1);
Date date2 = df.parse(stringDate2);
if (date1.compareTo(date2) < 0) {
    # date1 is before date2 
} else if (date1.compareTo(date2) > 0) {
    # date1 is after date2
} else {
    # they are the same
}
2 голосов
/ 26 января 2012

Используйте Дата класс вместо. У него есть такие методы, как after () , что намного лучше, чем ваши реализации сравнения. Хранить время как double просто неправильно (из-за разных часовых поясов и т. Д.).

1 голос
/ 26 января 2012

Дата как двойная? Это что-то новое, и я думал, что видел все: (

Не делай этого. Класс java.util.Date - это немного больше, чем отметка времени long с устаревшими методами, которые вы не должны использовать. Значение этой отметки времени - примитив long, представляющий миллисекунды эпохи (1 января 1970 г., 00:00:00 по Гринвичу). Это целое число с точностью до миллисекунды, поэтому, пожалуйста, не сохраняйте его как double, вы заставите компилятор плакать.

Для простоты вы можете обратиться к классу Apache Commons DateUtils , чтобы найти удобные и полезные методы при работе с датами и календарями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...