Java将时间格式转换为整数或长整数

3
我想知道将格式为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);
        }
    }

然而,这将向ArrayList添加索引1、2和3...

有人能帮帮我吗?


您正在添加到目前为止找到的最大条目。也许您打算在循环之后添加找到的最大条目?即将循环中的最后两行移动到其后面。 - Peter Lawrey
或者您可以阅读我的示例。;) - Peter Lawrey
啊,谢谢。我喜欢你的例子,但是我不能使用它,因为我需要保持数组元素的顺序,因为我需要记录最近时间的索引。 - littleK
6个回答

5

通过比较字符串,您可以找到最近的时间,无需先转换为长整型。

例如:

 String[] times = { "12:23:45", "23:59:59", "00:00:00" }
 Arrays.sort(times);
 String firstTime = times[0];
 String lastTime = times[times.length-1];

4

使用 java.text.SimpleDateFormat。您可以使用所需的格式构造它,然后调用 parse(),传递字符串。然后,您可以获取每个所需的字段。


0

使用simpleDateFormat解析该字符串并获取一个Calendar实例, 然后,使用calendar实例的getTime()方法, 您将以长格式获得日期并可以对这些日期进行排序。


0

这取决于你的目标是什么。

如果只是为了能够按顺序排列时间,那么你不需要将它们转换。假设它们确实都在那个8个字符的格式中,String.compareTo() 就可以工作。

如果你真的想先将它们转换为整数(可能是出于性能原因),只需使用 Integer.parseInt(s.substring(0,2) + s.substring(3, 5) + s.substring(6))


嗨,阿奇,我决定比较这些字符串,但是我遇到了一个问题。你能看一下我的修改吗? - littleK

0
添加到@Bozho的回答中:一旦您从SimpleDateFormat获得了Date对象,您可以调用Date.getTime()以获取所需的长时间。

0

好的,和其他建议一样,您可以使用Collections.sort(ArrayList),其中ArrayList包含所有日期对象。如果您只需要最新的日期,从这个ArrayList中选择最后一个值即可。 我认为这对您来说应该足够了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接