如何使用 if else 语句比较两个不同的时间?



我正在尝试比较两个不同的时间以查看哪个时间在另一个时间之前,但是我无法想出一个 else if 语句来比较它们的后缀(am 和 pm(并输出第一次相对于其他时间的顺序。

编辑:后缀1和后缀2的日期类型是字符串,time1和time2的数据类型是int

到目前为止,我有这段代码可以检查句点是否相等:

if (suffix1.equals(suffix2))
{
if (time1 > time2)
{
System.out.print("After");
}
.....
}

有没有办法查看哪个时间的后缀在另一个时间之前?

我认为你追求的是以下内容:

String timeString1 = "2:00 PM";
String timeString2 = "9:00 AM";
DateTimeFormatter timeFormatParser 
= DateTimeFormatter.ofPattern("h:mm a", Locale.ENGLISH);
LocalTime time1 = LocalTime.parse(timeString1, timeFormatParser);
LocalTime time2 = LocalTime.parse(timeString2, timeFormatParser);
if (time1.isAfter(time2)) {
System.out.println("After");
}

使用我示例中的字符串,代码确实打印After.如果你原来的时间字符串有不同的格式,我希望你能相应地修改格式模式字符串,否则在评论中跟进。或者更好的是,编辑您的问题以精确指定您的字符串。您可以使用的字母记录在此处。请注意,格式模式区分大小写。

我的DateTimeFormatter期望大写AMPM。如果您的字符串为小写,则有几个选项:

  1. 简单:timeString1 = timeString1.toUpperCase(Locale.ENGLISH);,同样适用于timeString2
  2. 通用但也更复杂:使用DateTimeFormatterBuilder构建不区分大小写的DateTimeFormatter

PS 在我使用的现代 Java 日期和时间 API 于 2014 年问世之前,人们经常使用一个名为SimpleDateFormat的类来解析为Date对象。如今远离它。较新的类已被证明使用起来更好,并且对程序员更友好。

使用日期表示应用程序中的时间:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

字符串表示形式应仅在显示时间时使用。 当您使用日期时,您可以像这样比较它们myDate.compareTo(anotherDate)

您可以以所需的任何形式打印日期,方法如下: 更改 Java 字符串中的日期格式

最新更新