Java “如何比较格式的日期时间”;EEE MMM dd HH:mm:ss zzz yyyy“;及;yyyy MM dd hh:MM:sss“;在爪哇?

Java “如何比较格式的日期时间”;EEE MMM dd HH:mm:ss zzz yyyy“;及;yyyy MM dd hh:MM:sss“;在爪哇?,java,datetime,datetime-comparison,Java,Datetime,Datetime Comparison,我的日期类型为“EEE MM DD HH:MM:ss zzz yyyy”(周三3月4日03:34:45 GMT+2020年08:00)和“yyyy MM DD HH:MM:ss”(2020-02-04 02:10:58)。如何在java中比较这两个日期 两个日期在同一时区。首先,这两个日期不可比较,因为第二个日期缺少时区 其次,如果您仍然希望使用系统的默认时区执行此操作,则需要将这两个日期转换为通用格式 将日期解析为Date对象,然后您可以围绕它进行游戏: DateFormat dateForm

我的日期类型为“EEE MM DD HH:MM:ss zzz yyyy”(周三3月4日03:34:45 GMT+2020年08:00)和“yyyy MM DD HH:MM:ss”(2020-02-04 02:10:58)。如何在java中比较这两个日期


两个日期在同一时区。

首先,这两个日期不可比较,因为第二个日期缺少时区

其次,如果您仍然希望使用系统的默认时区执行此操作,则需要将这两个日期转换为通用格式

将日期解析为
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));

首先,这两个日期不可比较,因为第二个日期缺少时区

其次,如果您仍然希望使用系统的默认时区执行此操作,则需要将这两个日期转换为通用格式

将日期解析为
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));

如果您假定第二个日期的时区与第一个日期的时区相同,则可以使用。它拥有您需要的所有解析工具。任何其他固定时区也可以

以下是一个例子:

String a=“Wed Mar 04 03:34:45 GMT+08:00 2020”;
字符串b=“2020-02-04 02:10:58”;
parsedA分区时间;
ZonedDateTime parsedB;
DateTimeFormatter Formatter=模式的DateTimeFormatter.of(“EEE MMM dd HH:mm:ss zzz yyyy”);
parsedA=zoneDateTime.parse(a,formatterA);
DateTimeFormatter Formatter B=模式的DateTimeFormatter.of(“yyyy-MM-dd HH:MM:ss”);
parsedB=LocalDateTime.parse(b,formatterB).atZone(parsedA.getZone());
//你想比较什么?例如,你可以判断a是否在b之后。
System.out.println(parsedA.isAfter(parsedB));

如果您需要另一种格式,并且需要一个图案字母和符号列表,请查看。

如果您假设第二个日期的时区与第一个日期的时区相同,则可以使用。它拥有您需要的所有解析工具。任何其他固定时区也可以

以下是一个例子:

String a=“Wed Mar 04 03:34:45 GMT+08:00 2020”;
字符串b=“2020-02-04 02:10:58”;
parsedA分区时间;
ZonedDateTime parsedB;
DateTimeFormatter Formatter=模式的DateTimeFormatter.of(“EEE MMM dd HH:mm:ss zzz yyyy”);
parsedA=zoneDateTime.parse(a,formatterA);
DateTimeFormatter Formatter B=模式的DateTimeFormatter.of(“yyyy-MM-dd HH:MM:ss”);
parsedB=LocalDateTime.parse(b,formatterB).atZone(parsedA.getZone());
//你想比较什么?例如,你可以判断a是否在b之后。
System.out.println(parsedA.isAfter(parsedB));

如果您需要另一种格式,并且需要图案字母和符号的列表,请查看。

您不能,因为第二种格式缺少时区信息。如果你假设第二个时区,那么你可以使用。它拥有您需要的所有解析工具。。我在这里没有看到任何报告?这回答了你的问题吗@MaThMaX感谢您搜索类似的问题,我相信还有更多。不过,这一个与您链接到的那个并不是完全相同的:它希望与现在的时间(当前时间)进行比较,并且只有一种日期时间格式,而不是两种不同的格式。您不能这样做,因为第二种格式缺少时区信息。如果你假设第二个时区,那么你可以使用。它拥有您需要的所有解析工具。。我在这里没有看到任何报告?这回答了你的问题吗@MaThMaX感谢您搜索类似的问题,我相信还有更多。不过,这一个并不是你链接到的那个的完全复制品:它想要与现在的时间(当前时间)进行比较,并且只有一种日期时间格式,而不是两种不同的格式。请不要教年轻人使用早已过时且臭名昭著的
SimpleDateFormat
类。至少不是第一个选择。而且不是毫无保留的。今天,我们有了更好的in及其
DateTimeFormatter
。请不要教年轻人使用早已过时且臭名昭著的
SimpleDateFormat
类。至少不是第一个选择。而且不是毫无保留的。今天,我们在及其
DateTimeFormatter
中有了更好的功能。