我想比较字符串时间格式,例如 有没有人提供其他api?
public void test() {
Stirng t1 = "10:30 AM"; // 12-hours format
Stirng t2 = "11:30 AM"; // 12-hours format
<or>
Stirng t1 = "10:30"; // 24-hours format
Stirng t2 = "11:30"; // 24-hours format
if(t1.before(t2)) {
System.out.println(t1 + " is before of " + t2);
}
}
答案 0 :(得分:6)
我想比较字符串时间格式
不要,除非你真的必须。
总的来说 - 随着时间的推移,这对我来说变得更加清晰,观看许多 Stack Overflow问题 - 越早将数据转换为“自然”格式就越好。在这种情况下,自然数据格式代表一天中的某个时间,不是字符串。
因此,解析所有字符串 - 最好使用Joda Time及其DateTimeFormatter.parseLocalTime
方法来创建LocalTime
个对象。然后它们将自然地具有可比性,并且还可用于您想要做的任何其他事情。尽可能长时间地保持数据的自然形式,只有当你完全 时才将其转换为字符串或其他表示形式,例如用于序列化到另一台机器。
当然,如果你可以避免在所有中使用字符串表示,那就更好了。
答案 1 :(得分:5)
您可以尝试使用Joda Time来解析时间并进行比较。
答案 2 :(得分:1)
我对此没有任何api知识,但你可以将你的字符串转换为日期
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
Date time = formatter.parse("11:30");
然后只需调用方法time.compareTo(otherTime)
答案 3 :(得分:0)
尝试JodaTime,
对于你的例子,它将是
if (new DateTime(2012, 9, 15, 10, 30).compareTo(new DateTime(2012, 9, 15, 11, 30) < 0) {
// first is before second date
}
编辑:在Jon的建议之后
这样会更好
if (new LocalTime(10, 30).compareTo(new LocalTime(11, 30) < 0) {
// first time is before second time
}
答案 4 :(得分:0)
使用Joda Time
DateTimeFormatter.parseLocalTime
方法提供与本地时区对应的时间对象。
请参阅此链接: