0

我想比较一下字符串时间格式,例如有没有其他人提供的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);
    }
}
4

5 回答 5

6

我想比较一下字符串时间格式

不要,除非你真的必须这样做。

总的来说——随着时间的推移,这对我来说越来越清楚了,观看了许多Stack Overflow 问题——越早将数据转换为“自然”格式越好。在这种情况下,自然数据格式是代表一天中的某个时间,而不是字符串。

所以解析你所有的字符串——最好使用Joda Time及其DateTimeFormatter.parseLocalTime创建LocalTime对象的方法。然后它们将自然具有可比性,并且也可用于您想做的任何其他事情。尽可能长时间地保持数据的自然形式,仅在绝对必要时将其转换为字符串或其他表示形式,例如序列化到另一台机器。

当然,如果您可以完全避免使用字符串表示那就更好了。

于 2012-09-28T08:19:19.123 回答
5

您可以尝试使用Joda Time来解析时间并进行比较。

于 2012-09-28T08:15:23.133 回答
0

试试乔达时间

对于您的示例,它将是

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
}
于 2012-09-28T08:19:33.757 回答
0

我对此一无所知,但是您可以将字符串转换为日期

SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");
Date time =  formatter.parse("11:30");

然后只需调用方法time.compareTo(otherTime)

于 2012-09-28T08:20:31.500 回答
0

利用Joda Time

DateTimeFormatter.parseLocalTime方法给出本地时区对应的时间对象。

请参阅此链接:

http://joda-time.sourceforge.net/

于 2012-09-28T08:41:54.207 回答