java中的时间比较
例如,我想比较字符串时间格式 是否有其他人提供的apijava中的时间比较,java,Java,例如,我想比较字符串时间格式 是否有其他人提供的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 fo
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);
}
}
您可以尝试使用解析时间并执行比较
我想比较字符串时间格式
不要这样做,除非你真的必须这样做
总的来说,随着时间的推移,我越来越清楚地看到了许多堆栈溢出问题,越早将数据转换为自然格式越好。在本例中,自然数据格式表示一天中的某个时间,而不是字符串
因此,解析所有字符串-理想情况下使用及其方法来创建对象。然后,它们将自然地具有可比性,并且也可用于您想要做的任何其他事情。尽可能长时间地保持数据的自然形式,仅在绝对必要时将其转换为字符串或其他表示形式,例如,用于序列化到另一台机器
当然,如果你能完全避免使用字符串表示,那就更好了。试试看
你的例子是
if (new DateTime(2012, 9, 15, 10, 30).compareTo(new DateTime(2012, 9, 15, 11, 30) < 0) {
// first is before second date
}
编辑:按照乔恩的建议
这样会更好
if (new LocalTime(10, 30).compareTo(new LocalTime(11, 30) < 0) {
// first time is before second time
}
我对这方面的api一无所知,但您可以将字符串转换为日期
SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
Date time = formatter.parse("11:30");
然后只调用方法time。与othertime相比,使用Joda time
DateTimeFormatter.parseLocalTime方法提供与本地时区对应的time对象
请参阅此链接:
DateTime不适合在这里使用-没有日期组件,我们也不知道时区。我们有一个一天中的时间,它由Joda time中的LocalTime表示。啊,谢谢@JonSkeet,我不知道LocalTime。SimpleDateFormat formatter=new SimpleDateFormatHH:mm a:小写字母“a”也可以解析AM/PMright,如果你想更精确,小时数可以是HH0-23/hhh0-11/kkk1-24/kkkk1-12