2013-12-07 70 views
1

我想这些时间,以便进行排序:TimeSorter:12小时时钟

4:05 AM 
5:04 PM 
6:04 AM 
4:05 PM 
5:04 AM 
12:01 AM 
12:01 PM 

使用Time类

public int compareTo(Time t) 

方法。

if(this.getMeridians() != t.getMeridians()) 
    return this.getMeridians().compareTo(t.getMeridians()); 

来排序的上午和下午,但我不知道该怎么小时和分钟排序。 它采用12小时制形式,因此上午12:01应该是名单上第一位。为了做到这一点,我应该如何填写compareTo(Time t)?

它应该是这样的。

12:01 AM 
4:05 AM 
5:04 AM 
6:04 AM 
12:01 PM  
4:05 PM 
5:04 PM 
+3

您发布了一个小时或2个以前的完全相同的问题。我告诉过你用相关语言标记它,但看起来你已经删除了它并转发了它。请标记你的问题! –

+0

这不是一种语言 - 总是用一种语言来标记你的问题,例如, C,C++,C#,VB,JS,Java,PHP等 –

+1

干得好。你的问题现在会得到更多的曝光。 –

回答

2
  1. 解析那些字符串Date对象
  2. 把他们集合
  3. 使用collection.sort()在整理收集

    import java.text.DateFormat; 
    import java.text.ParseException; 
    import java.text.SimpleDateFormat; 
    import java.util.ArrayList; 
    import java.util.Collections; 
    import java.util.Date; 
    import java.util.List; 
    import java.util.Locale; 
    
    String[] sArr = new String[] { "4:05 AM", "5:04 PM", "6:04 AM", 
         "4:05 PM", "5:04 AM", "12:01 AM", "12:01 PM"}; 
    
    DateFormat dateFormat = new SimpleDateFormat("hh:mm a", Locale.US); 
    List<Date> dates = new ArrayList<Date>(); 
    try { 
        for (String s : sArr) { 
         Date date = dateFormat.parse(s); 
         dates.add(date); 
        } 
    } catch (ParseException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
    } 
    
    Collections.sort(dates); 
    
    for (Date date : dates) { 
        System.out.println(dateFormat.format(date)); 
    } 
    
1

answer by Guy是正确的。

为了好玩,我做了相同类型的代码,但使用了2.3库。

我的代码假设你真的只需要时间,没有日期。因此,您将无法处理夏令时或其他问题。

// © 2013 Basil Bourque. This source code may be used freely forever by anyone taking full responsibility for doing so. 
// import org.joda.time.*; 
// import org.joda.time.format.*; 

DateTimeFormatter formatter = DateTimeFormat.forPattern("hh:mm a"); 
// LocalTime time = formatter.parseLocalTime("4:05 PM"); 

// Create a list of org.joda.time.LocalTime instances, created by parsing strings. 
List list = new ArrayList(7); 
list.add(formatter.parseLocalTime("4:05 AM")); 
list.add(formatter.parseLocalTime("5:04 PM")); 
list.add(formatter.parseLocalTime("6:04 AM")); 
list.add(formatter.parseLocalTime("4:05 PM")); 
list.add(formatter.parseLocalTime("5:04 AM")); 
list.add(formatter.parseLocalTime("12:01 AM")); 
list.add(formatter.parseLocalTime("12:01 PM")); 
System.out.println("Unsorted: " + Arrays.toString(list.toArray())); 

// Sort that list. 
Collections.sort(list); 
System.out.println("Sorted: " + Arrays.toString(list.toArray())); 

当运行...

Unsorted: [04:05:00.000, 17:04:00.000, 06:04:00.000, 16:05:00.000, 05:04:00.000, 00:01:00.000, 12:01:00.000] 
Sorted: [00:01:00.000, 04:05:00.000, 05:04:00.000, 06:04:00.000, 12:01:00.000, 16:05:00.000, 17:04:00.000] 

如果您需要的输出值再次为AM/PM格式,搜索StackOverflow.com使用格式化的乔达时间创建的字符串的例子(”打印“方法)。