#java #timestamp #java_8
У меня есть дата в timestamp формате. Каким образом можно проверить равна ли она текущей дате без учета времени? Например 1502010000 она равна 6.07.2017. Я получил данную дату и текущую, но как сравнить не понятно: Instant date= Instant.ofEpochSecond(1502010000); Instant now = Instant.now();
Ответы
Ответ 1
Java 8 представила новый механизм для работы с датами реализованный API из пакета java.time.*. В данном случае для сравнения дат можно использовать следующий макет поведения: Timestamp timestamp = new Timestamp(1502010000); LocalDateTime before = timestamp.toLocalDateTime(); LocalDateTime now = LocalDateTime.now(); int compareREsult = now.compareTo(before); Если compareResult отрицательное число - если сравниваемая дата позже, положительное - если раньше и ноль если равны. UPD: Поскольку в вопросе есть неучтенное условие, что дата должна сравниваться без времени, то предлагается использоваться следующий вариант: Timestamp timestamp = new Timestamp(1502041448453l); // System.out.println(timestamp); выведет "2017-08-06 20:44:08.453" LocalDate localDateTime = timestamp.toLocalDateTime().toLocalDate(); LocalDate now = LocalDate.now(); // System.out.println(now); выведет "2017-08-06" // Выведет 0; System.out.println(now.compareTo(localDateTime));Ответ 2
Я может что-то не понял, но: https://habrahabr.ru/post/61391/ TIMESTAMP Хранит 4-байтное целое число, равное количеству секунд, прошедших с полуночи 1 января 1970 года И данное вами число выдает 18 января 1970, а никак не 6 августа 2017 http://www.fileformat.info/tip/java/date2millis.htm Но если у вас все отлично показывает, то можете использовать Calendar и просто обнулить время private static Date dateRemoveTime(Date date){ Calendar calendar = new GregorianCalendar(); calendar.setTime(date); calendar.set(Calendar.HOUR, 0); calendar.set(Calendar.MINUTE, 0); calendar.set(Calendar.SECOND, 0); calendar.set(Calendar.MILLISECOND, 0); return calendar.getTime(); }
Комментариев нет:
Отправить комментарий