我会觉得你像下面这样以后是:
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
预计大写AM
或PM
。如果你的字符串大小写有他们,有几个选项:
- 简单:
timeString1 = timeString1.toUpperCase(Locale.ENGLISH);
,类似的还有timeString2
。
- 更一般但也更复杂:使用
DateTimeFormatterBuilder
构建不区分大小写的DateTimeFormatter
。
PS,我在2014年用出来的现代Java的日期和时间API之前,人们会经常使用一种叫做SimpleDateFormat
解析成Date
对象类。现在远离那个。较新的类已经显示出更好的工作和更多的程序员友好。
什么数据类型是time1和time2? –
什么类型是time1和time2? –
为什么不只是将整个字符串解析为Date或Instant,并直接比较它们? –