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

时间:2017-07-06 22:35:24

标签: java if-statement time branch

我试图比较两个不同的时间,看看哪一个出现在另一个之前,但是我遇到了一个else if语句来比较它们的后缀(am和pm)并输出命令时遇到了麻烦第一次相对于另一次。

编辑:suffix1和suffix2的日期类型是字符串,time1和time2的数据类型是int

到目前为止,我有一段代码可以检查周期是否相等:

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

有没有办法看到哪些时候'后缀来自另一个?

2 个答案:

答案 0 :(得分:1)

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

    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。如果您的原始时间字符串具有不同的格式,我希望您可以相应地修改格式模式字符串,否则请在注释中进行跟进。或者更好,编辑您的问题以精确指定您的字符串。您可以使用的字母为documented here。请注意格式模式区分大小写。

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

  1. 简单:timeString1 = timeString1.toUpperCase(Locale.ENGLISH);,同样适用于timeString2
  2. 更通用但更复杂:使用DateTimeFormatterBuilder构建不区分大小写的DateTimeFormatter
  3. PS在2014年我使用的现代Java日期和时间API出现之前,人们通常会使用名为SimpleDateFormat的类来解析Date对象。如今远离那个。较新的课程表现出更好的工作和更多的程序员友好。

答案 1 :(得分:0)

使用日期表示申请时间:https://docs.oracle.com/javase/8/docs/api/java/util/Date.html

字符串表示只应在显示时间时使用。 使用日期时,您可以将其与myDate.compareTo(anotherDate)进行比较。

您可以按照您想要的任何形式打印日期,方法如下:Change date format in a Java string