java - 按时间顺序对日期进行排序

标签 java android

friend 们,我有一个包含日期记录的字符串

String date=10-Oct-2012 @12-Oct-2012 @$12-Oct-2012 @12-Oct-2012 @$12-Sept-2012 13:50@12-Oct-2012 13:50@$12-Feb-2012 13:50@12-Oct-2012 13:50@$

List<Date> myList=new ArrayList<Date>() ;

我需要比较日期10-Oct-2012,12-OCt-2012,12-Sept-2012,12-Feb-2012即每个奇数日期,以便我可以将它们排列按时间顺序排列。我对此实现感到困惑,请为我提供解决问题的指导/提示。

在这种情况下,按时间顺序排列后的解决方案将是 12-Feb-2012 @12-Oct-2012 @12-Sept-2012 @12-Oct-2012 @$10-Oct-2012 @12-Oct- 2012 @$12-Oct-2012 @12-Oct-2012

friend 们,为了解决这个问题,我创建了一个 HashMap ,我计划将第一个日期保存为键,将整个字符串保存为值。

String[] tokens=date.split("\\$");
    demo[0]=demo[0].replaceAll("-", ".");
if(tokens.length>0)
        {
            for(int iTmp=tokens.length-1;iTmp>=0;iTmp--)
            {
                String []demo = tokens[iTmp].split("\\@");
                    demo[0] = demo[0].replace("Jan", "1")
                    .replace("Feb", "2").replace("March","3").replace("April","4").replace("May","5").replace("Jun","6").replace("July","7").replace("Aug","8")
                    .replace("Sept","9").replace("Oct","10").replace("Nov","11").replace("Dec","12");
                    demo[0]=demo[0]+" 00:05:00";
                    Date date1 = null;
                    SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yy");


                    try {
                        date1 = (Date)formatter.parse(demo[0]);

                    } catch (ParseException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    myList.add(date1);
                    System.out.println("ADDED DATE IS"+date1);
                    //System.out.println("KEY VALUE PAIRS  "+key+"  "+tokens[iTmp]);
                }
            }
            System.out.println("READING LISTs");
            for(int iTmp=0;iTmp<myList.size();iTmp++)
            {

                System.out.println(myList.get(iTmp));
            }
            Collections.sort(myList);
            System.out.println("After Sorting");
            for(int iTmp=0;iTmp<myList.size();iTmp++)
            {

                System.out.println(myList.get(iTmp));
                System.out.println();
            } 

最佳答案

对我来说听起来很简单:

  • 将每个值解析为更合适的类型(日历日期、Joda Time 的 LocalDate)
  • 按自然顺序排序

(在我看来,使用 Joda Time 是首选选项,因为 CalendarDate 都不真正代表“只是一个日期”;您必须将所有值放入相同的时区等)

我绝对建议尝试将它们作为字符串进行比较。像往常一样,尽早将数据转换为最适合其试图表示的信息的类型 - 并尽可能晚地将其转换为序列化表示形式(例如用于存储、传播到 Web 服务等)。

关于java - 按时间顺序对日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12856163/

相关文章:

java - 使用 edittext 在 ListView 中搜索

java - 任务 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug' 执行失败

java - ImageButton 单击监听器不起作用

Android:如何以编程方式在“我的位置”中启用 "Use wireless networks"

java - 为 Android 应用程序设置服务器

java - 将图像从客户端电脑复制到 BLOB(又名 Oracle 中的 Java 函数)

java - 无法找到到所请求目标的有效证书路径 - 即使在导入证书后也会出错

java - 关于java中的异常捕获

java - LayerUI, g.drawImage 下划线

android - 在不重新启动的情况下调试已经运行的应用程序