Преобразуйте строку Specifi c в дату и убедитесь, что она больше текущей даты - PullRequest
1 голос
/ 07 февраля 2020

У меня есть string s="2020-04-07T13:43:49-05:00"

Мне нужно проверить, превышает ли оно текущую дату, и я попытался использовать мгновенную дату

Instant timestamp = Instant.parse(string); 

Но не сработало, и я попытался с LocalDate

LocalDate date = LocalDate.parse(string, format); 

это тоже не работает, как разобрать и проверить

Ответы [ 3 ]

2 голосов
/ 07 февраля 2020

Вы должны разобрать его в OffsetDateTime , поскольку строка даты имеет смещение

Дата-время со смещением от UTC / Гринвич в календарной системе ISO-8601, например как 2007-12-03T10: 15: 30 + 01: 00.

String s="2020-04-07T13:43:49-05:00";

OffsetDateTime dateTime = OffsetDateTime.parse(s);

, а затем проверить, превышает или нет значение, используя isBefore или isAfter путем преобразования в LocalDateTime

LocalDateTime.now().isBefore(dateTime.toLocalDateTime())

Вы также можете сравнить OffsetDateTime напрямую, используя isBefore и isAfter

OffsetDateTime.now().isBefore(dateTime)
1 голос
/ 07 февраля 2020

Это прекрасно работает для меня, используя Java (jshell) 13:

jshell> import java.time.Instant

jshell> Instant.parse("2020-04-07T13:43:49-05:00")
$2 ==> 2020-04-07T18:43:49Z

0 голосов
/ 07 февраля 2020

Используйте SimpleDateFormat для этого. Возьмите свою строку и отформатируйте ее до даты, а затем проверьте ее.

Date date= new Date();
String targetDate="2020-04-07 13:43:49";
Date date2= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(targetDate);

Теперь вы можете просто проверить две даты по

if(date.getTime()>date2.getTime())

Если вы хотите сделать это противоположным способом Вы можете сделать это тоже.

Date date= new Date();
String currentDate=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date)

Теперь просто проверьте две строки с условием if.

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