我想知道将00:00:00格式的时间字符串转换为整数或长整数的最佳方法是什么?我的最终目标是能够将一堆字符串时间转换为整数/长整数,将它们添加到数组中,并在数组中找到最近的时间......
感谢任何帮助,谢谢!
好的,根据答案,我决定继续直接比较字符串。但是,我遇到了一些麻烦。可能有一个以上的“最近”时间,即两次相等的时间。如果是这种情况,我想将这两个时间的索引添加到ArrayList。这是我目前的代码:
days[0] = "15:00:00";
days[1] = "17:00:00";
days[2] = "18:00:00";
days[3] = "19:00:00";
days[4] = "19:00:00";
days[5] = "15:00:00";
days[6] = "13:00:00";
ArrayList<Integer> indexes = new ArrayList<Integer>();
String curMax = days[0];
for (int x = 1; x < days.length1; x++) {
if (days[x].compareTo(curMax) > 0) {
curMax = days[x];
indexes.add(x);
System.out.println("INDEX OF THE LARGEST VALUE: " + x);
}
}
但是,这是将索引1,2和3添加到ArrayList ...
任何人都可以帮助我吗?
答案 0 :(得分:5)
您可以通过比较字符串找到最近的时间,您不需要先转换为长字符串。
e.g。
String[] times = { "12:23:45", "23:59:59", "00:00:00" }
Arrays.sort(times);
String firstTime = times[0];
String lastTime = times[times.length-1];
答案 1 :(得分:4)
使用java.text.SimpleDateFormat
。您使用所需的格式构造它,然后调用parse()
,传递字符串。然后,您可以获得每个所需的字段。
答案 2 :(得分:0)
使用simpleDateFormat解析该字符串并获取其中的Calendar实例 然后,使用日历实例的getTime()方法, 您将获得长格式并可以对这些日期进行排序。
答案 3 :(得分:0)
取决于你的目标究竟是什么。
如果只是为了能够按顺序排列时间,那么你就不需要转换它们了。假设它们都是8字符格式,String.compareTo()
将起作用。
如果你真的想首先将它们转换为整数(可能是出于性能原因),只需使用Integer.parseInt(s.substring(0,2) + s.substring(3, 5) + s.substring(6))
。
答案 4 :(得分:0)
添加到@ Bozho的答案:从SimpleDateFormat获得Date对象后,您可以调用Date.getTime()来获取您想要的时间。
答案 5 :(得分:0)
嗯,与此处的其他建议一样,您可以使用Collections.sort(ArrayList)
,其中Arraylist包含所有日期对象。如果只需要最新的,请从此ArrayList中选择最后一个值。
我觉得这应该适合你。