Как сравнить дату и время формата "EEE MMM dd HH: mm: ss zzz yyyy" и "yyyy-MM-dd hh: mm: sss" в java? - PullRequest
0 голосов
/ 03 марта 2020

У меня есть дата типа "EEE MM DD HH: mm: ss zzz yyyy" (ср. 04 марта 03:34:45 GMT + 08: 00 2020) и "yyyy-MM-dd чч: мм: сс" ( 2020-02-04 02:10:58). Как сравнить эти две даты в java?

Обе даты находятся в одном часовом поясе.

Ответы [ 2 ]

3 голосов
/ 04 марта 2020

Если вы предполагаете, что часовой пояс второй даты такой же, как и для первой, тогда вы можете просто использовать java .time . В нем есть все необходимые инструменты синтаксического анализа. Любой другой фиксированный часовой пояс также работает.

Вот пример:

String a = "Wed Mar 04 03:34:45 GMT+08:00 2020";
String b = "2020-02-04 02:10:58";

ZonedDateTime parsedA;
ZonedDateTime parsedB;

DateTimeFormatter formatterA = DateTimeFormatter.ofPattern("EEE MMM dd HH:mm:ss zzz yyyy");
parsedA = ZonedDateTime.parse(a, formatterA);
DateTimeFormatter formatterB = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
parsedB = LocalDateTime.parse(b, formatterB).atZone(parsedA.getZone());

// What do you want to compare? For example you can tell if a is after b.
System.out.println(parsedA.isAfter(parsedB));

Посмотрите здесь , если вам нужен другой формат и вам нужен список Шаблон Буквы и Символы .

1 голос
/ 04 марта 2020

Во-первых, эти две даты несопоставимы из-за отсутствия часового пояса во второй дате.

Во-вторых, если вы все еще хотите сделать это с часовым поясом системы по умолчанию, вам нужно перенести обе даты в общий формат.

Разобрать даты в Date объект, а затем вы можете поиграть с ним:

DateFormat dateFormat1 = new SimpleDateFormat("EEE MMM dd HH:mm:ss Z yyyy");
Date date1 = dateFormat1.parse("Wed Mar 04 03:34:45 GMT+08:00 2020");

DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date2 = dateFormat2.parse("2020-02-04 02:10:58");

System.out.println(date1.after(date2));
...