我有两个用于以hh:mm格式存储时间的字符串.我想比较这两个字段以了解哪个时间更长.哪种方法最简单?
han*_*ide 22
使用SimpleDateFormat和Date类.后者实现Comparable,因此您应该能够使用.compareTo()方法进行实际比较.例:
String pattern = "HH:mm";
SimpleDateFormat sdf = new SimpleDateFormat(pattern);
try {
Date date1 = sdf.parse("19:28");
Date date2 = sdf.parse("21:13");
// Outputs -1 as date1 is before date2
System.out.println(date1.compareTo(date2));
// Outputs 1 as date1 is after date1
System.out.println(date2.compareTo(date1));
date2 = sdf.parse("19:28");
// Outputs 0 as the dates are now equal
System.out.println(date1.compareTo(date2));
} catch (ParseException e){
// Exception handling goes here
}
Run Code Online (Sandbox Code Playgroud)
有关模式,请参阅SimpleDateFormat文档.
Jon*_*eet 11
好吧,如果它们实际上是 hh:mm(包括前导零和24小时格式),那么你可以按字典顺序(即使用String.compareTo(String))进行比较.这是可排序格式的好处:)
当然,这不会检查两个值是否都是有效时间.如果你需要这样做,你应该解析两次:检查长度,检查冒号,解析两个子串,并可能将小时数乘以60并将其加到分钟数,以获得总分钟数.然后你可以比较这两个总数.
编辑:正如评论中提到的,如果您确实需要解析这些值,无论出于何种原因,我个人建议使用Joda Time(可能是缩减版本,考虑到移动性质)而不是SimpleDateTimeFormat和Date.Joda Time是一个比内置API更好的日期和时间API.