2013-01-22 13 views
15

मैंजावा में स्ट्रिंग प्रारूप में दिनांक को कैसे क्रमबद्ध करें?

ArrayList<String> datestring=new ArrayList<String>(); 
datestring.add("01/21/2013 @03:13 PM"); 
datestring.add("01/21/2013 @04:37 PM"); 
datestring.add("01/21/2013 @10:41 AM"); 
datestring.add("01/21/2013 @10:48 AM"); 
datestring.add("01/22/2013 @06:16 AM"); 
datestring.add("01/22/2013 @06:19 AM"); 
datestring.add("01/21/2013 @05:19 PM"); 
datestring.add("01/21/2013 @05:19 PM"); 

तरह स्ट्रिंग मूल्यों के साथ एक arraylist शरीर के किसी भी उपरोक्त सूची छँटाई पर मेरी मदद कर सकते है? ताकि मूल्य AM और PM प्रारूप के अनुसार क्रमबद्ध किए जाएं।
छँटाई करने के बाद अपेक्षित उत्पादन

for (String s : datestring) 
{ 
    System.out.println(s); 
} 

होना चाहिए।

01/21/2013 @10:41 AM; 
01/21/2013 @10:48 AM; 
01/21/2013 @03:13 PM; 
01/21/2013 @04:37 PM; 
01/21/2013 @05:16 PM; 
01/21/2013 @05:19 PM; 
01/22/2013 @06:16 AM; 
01/22/2013 @06:19 AM; 
+0

बड़ा सवाल स्ट्रिंग पार्स करने के लिए है के द्वारा! –

उत्तर

51

की तरह कुछ इस

Collections.sort(datestring, new Comparator<String>() { 
     DateFormat f = new SimpleDateFormat("MM/dd/yyyy '@'hh:mm a"); 
     @Override 
     public int compare(String o1, String o2) { 
      try { 
       return f.parse(o1).compareTo(f.parse(o2)); 
      } catch (ParseException e) { 
       throw new IllegalArgumentException(e); 
      } 
     } 
    }); 

या जावा के साथ प्रयास करें 8

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy '@'hh:mm a"); 
    Collections.sort(datestring, (s1, s2) -> LocalDateTime.parse(s1, formatter). 
      compareTo(LocalDateTime.parse(s2, formatter))); 
+0

बहुत धन्यवाद यह मेरे परिदृश्य के लिए पूरी तरह से काम किया .. – user1740005

+0

बहुत बहुत ... +1 वोट – vicky

+0

मेरे पास मेरी स्ट्रिंग में समय नहीं है। प्रारूप yyyy-MM-dd है। जब मैं उपर्युक्त विधि को हल करने का प्रयास करता हूं, तो सूची वही रहती है। कृपया मदद करे। – Aradhna

0

ऐरेलिस्ट डिफ़ॉल्ट रूप से सॉर्टिंग का समर्थन नहीं करता है। आप

public static <T> void sort(List<T> list, Comparator<? super T> c)java.util.Collections कक्षा से उपयोग कर सकते हैं। दिनांक सॉर्ट करने के लिए तुलनित्र के अपने कार्यान्वयन गुजरती हैं,

http://www.coderanch.com/t/392338/java/java/compare-Dates-String-Format

0

शायद आप एक कस्टम तुलनित्र की तुलना करने के लिख सकते हैं आवश्यकता के आधार पर तारीख स्ट्रिंग्स और ऑर्डर। फिर आप संग्रहित तुलनित्र के साथ संग्रह को सॉर्ट करने में सक्षम होंगे।

2

आपकी समस्या के आसपास होने का एक तकनीकी तरीका है, लेकिन मूल गलती Date एस String एस, 'आदिम जुनून' के रूप में प्रस्तुत करना है। यदि आपके पास टेक्स्ट इनपुट है, तो इसे java.util.Date या एक उचित जोडा क्लास में परिवर्तित करें (LocalDateTime यहां उचित लगता है)। ये कक्षाएं बॉक्स के बाहर Comparable लागू करती हैं, और उन्हें सॉर्ट करना आसान है। लेकिन उनके पास बोर्ड पर अन्य सभी तर्क भी हैं जिनकी आपको दिनांक/समय के उदाहरणों में छेड़छाड़ करने की आवश्यकता होती है, स्ट्रिंग्स नहीं करते हैं।

0

एक विकल्प ट्रीमैप में तारीखों को जोड़ना है, कुंजी के रूप में अनौपचारिक तिथि के साथ, और स्वरूपित दिनांक मान के रूप में। एक TreeMap का उपयोग करना स्वचालित रूप से मानों को क्रमबद्ध करेगा।

private ArrayList<String> sortDates(ArrayList<String> dates) throws ParseException { 
    SimpleDateFormat f = new SimpleDateFormat("dd MMM yyyy"); 
    Map <Date, String> dateFormatMap = new TreeMap<>(); 
    for (String date: dates) 
     dateFormatMap.put(f.parse(date), date); 
    return new ArrayList<>(dateFormatMap.values()); 
} 
0

तुलनात्मक रूप से तुलना करके स्ट्रिंग प्रारूप में तारीख की सूची की तुलना कर सकते हैं जैसा कि नीचे दिया गया है।

ArrayList<String> datestring=new ArrayList<String>(); 
datestring.add("01/21/2013 @03:13 PM"); 
datestring.add("01/21/2013 @04:37 PM"); 
datestring.add("01/21/2013 @10:41 AM"); 
datestring.add("01/21/2013 @10:48 AM"); 
datestring.add("01/22/2013 @06:16 AM"); 
datestring.add("01/22/2013 @06:19 AM"); 
datestring.add("01/21/2013 @05:19 PM"); 
datestring.add("01/21/2013 @05:19 PM"); 

Collections.sort(datestring, new Comparator<String>() { 
       @Override 
       public int compare(String object1, String object2) { 
        return object1.compareTo(object2); 
       } 
      }); 

का उपयोग कर इस तुम भी न की तारीख में

संबंधित मुद्दे