यह इस बात पर निर्भर करता है कि आप प्रारूपों को मिश्रित कर रहे हैं या नहीं।
किसी भी विशिष्ट प्रारूप के भीतर, yyyy-mm-dd
या yyyy-Www-d
, आईएसओ 8601 को लेक्सिकोग्राफिक (नकारात्मक वर्षों के अलावा) को क्रमबद्ध करने के लिए बनाया गया है।
ISO 8601 wikipedia page से
: वर्ष, माह (या सप्ताह), दिन, घंटा, मिनट, सेकंड, और दूसरा के अंश:
का दिनांक और समय मान कम से कम महत्वपूर्ण करने के लिए सबसे से आयोजन किया जाता है। इस प्रकार प्रतिनिधित्व का लेक्सिकोोग्राफिक क्रम ऋणात्मक वर्षों से संबंधित दिनांक प्रस्तुतियों को छोड़कर कालक्रम के क्रम से मेल खाता है। यह तारीखों को स्वाभाविक रूप से सॉर्ट करने की अनुमति देता है, उदाहरण के लिए, फाइल सिस्टम।
इसका मतलब है कि स्ट्रिंग सॉर्टिंग ठीक काम करना चाहिए।
यह केवल तभी होता है जब आप मिश्रण प्रारूप काम नहीं करेंगे। यदि ऐसा है, तो आपको तुलना करने से पहले एक विशिष्ट प्रारूप में कनवर्ट करना होगा। इसके द्वारा, मेरा मतलब है कि सभी स्वरूपों को तुलना से पहले yyyy-mm-dd
में परिवर्तित करना और फिर वांछित होने पर बाद में वापस करना।
उदाहरण के लिए, यदि आप इनपुट डेटा है:
2010-03-01:2010-03-01
2010-01-04:2010-W01-1
(एक विशिष्ट रूप से वास्तविक डेटा लगाकर) तो उस क्रमबद्ध करें:
2010-03-01
2010-W01-1
आप पहली बार उन सब को बदल सकता है। एक बार सॉर्ट हो जाने पर, आप वापस जाएं और प्रत्येक तत्व में पहले :
वर्ण तक सबकुछ बंद कर दें, जो मूल रूप को पुनर्प्राप्त करेगा।
आवश्यक रूप से सबसे प्रभावी तरीका नहीं है लेकिन आपको कुछ करना होगा यदि आप मूल फॉर्म को संरक्षित करना चाहते हैं। यदि यह कोई मुद्दा नहीं है, तो बस उन्हें एक बार विशिष्ट रूप में रूपांतरित करें और उन्हें इस तरह छोड़ दें।
इस दिनांक स्वरूप है: 2012-03-05 00: 30: 00.000 – alphablender
@alphablender, कि एक तारीख नहीं है, यह एक है तिथि/समय :-) लेकिन सिद्धांत अभी भी है: इसे एक सामान्य रूप में परिवर्तित करें ताकि लेक्सिकोोग्राफ़िकल सॉर्टिंग काम करे, इसे क्रमबद्ध करें, फिर इसे वापस परिवर्तित करें (यदि आवश्यक हो)। यदि आपकी तिथियों में से _all_ पहले से ही उस फ़ॉर्म के हैं, तो आपको सभी को बदलने की आवश्यकता नहीं है - सामान्य स्ट्रिंग सॉर्टिंग ठीक काम करेगी। – paxdiablo