2012-05-27 18 views
23

का प्रारूपण मैं सिर्फ तारीख इसलिए की तरह दिखाना चाहते हैं:कैलेंडर दिनांक

Saturday, May 26, 2012 at 10:42 PM

यहाँ अब तक मेरी कोड है:

Calendar calendar = Calendar.getInstance(); 
String theDate = calendar.get(Calendar.MONTH) + " " + calendar.get(Calendar.DAY_OF_MONTH) + " " + calendar.get(Calendar.YEAR); 

lastclick.setText(getString(R.string.lastclick) + " " + theDate); 

इस महीने, दिन की संख्या पता चलता है, और साल, लेकिन ऐसा करने का एक बेहतर तरीका होना चाहिए? PHP के date() फ़ंक्शन का उपयोग करने की तरह ऐसा करने का कोई आसान तरीका नहीं है?

+1

हां। नहीं देखते कि यह इतना मुश्किल क्यों है। – scarhand

उत्तर

14

आवश्यकतानुसार तिथि को प्रारूपित करने के लिए नीचे दिए गए उपयोग करें। देखें इस LINK

Calendar calendar = Calendar.getInstance(); 
lastclick.setText(getString(R.string.lastclick) + " " + String.format("%1$tA %1$tb %1$td %1$tY at %1$tI:%1$tM %1$Tp", calendar)); 

कहाँ staurday के लिए% 1 $ टीए, % मई के लिए 1 $ टीबी,

और इतने पर ...

+1

मैंने गलती से इसे एक से ऊपर उठाया, लेकिन मुझे डाउनवॉटिंग के बिना मेरा अपवोट हटाने में सक्षम नहीं लगता है, जो आवश्यक नहीं है। यह एक काम करता है, लेकिन नीचे दिया गया एक और अधिक सरल और पढ़ने के लिए बहुत आसान है। – craned

71
Calendar calendar = Calendar.getInstance(); 
SimpleDateFormat format = new SimpleDateFormat("EEEE, MMMM d, yyyy 'at' h:mm a"); 
System.out.println(format.format(calendar.getTime())); 

उपर्युक्त कोड चालू समय को चालू करता है (उदाहरण के लिए, Saturday, May 26, 2012 at 11:03 PM)।

अधिक जानकारी के लिए Android documentation for SimpleDateFormat देखें।

SimpleDateFormat के प्रारूप विनिर्देश PHP के date समारोह के समान है:

echo date("l, M j, Y \a\\t g:i A"); 

आप सही हैं। जावा कोड की तुलना में, PHP कोड बहुत अधिक संक्षिप्त है।

+0

आपका कोड पूछताछ करने वाले विशिष्ट प्रारूप को उत्पन्न करता है, लेकिन अगर मैं उपयोगकर्ता की सिस्टम सेटिंग्स के अनुसार प्रारूप को सेट करना चाहता हूं तो क्या होगा? विंडोज़ पर, सी # कोड डेटटाइम। ToLongDateString() इसे उत्पन्न करता है। अगर मैं एंड्रॉइड पर एक ही चीज़ हासिल करना चाहता हूं तो क्या होगा? –

+1

एक समाधान के लिए मेरा उत्तर देखें जिसमें लोकेल शामिल है। – String

10

यह वास्तव में एक बहुत ही सूक्ष्म समस्या सही करने के लिए है

  • Calendar के समय क्षेत्र (जिसका अर्थ है कि यह लो तुलना में एक अलग तारीख दिखा रहा है:, और मैं एक और उत्तर इतने पर यहाँ है कि दोनों के पते नहीं देखा है कैलोरी)
  • डिवाइस की Locale (जो प्रारूप दिनांकों को "सही" जिस तरह से प्रभावित करता है)

इस सवाल का वातावरण अनदेखी करने के लिए पिछले जवाब, और अन्य उत्तर है कि एक Date करने के लिए रूपांतरण शामिल समय क्षेत्र पर ध्यान न दें।

Calendar cal = Calendar.getInstance(); // the value to be formatted 
java.text.DateFormat formatter = java.text.DateFormat.getDateInstance(
     java.text.DateFormat.LONG); // one of SHORT, MEDIUM, LONG, FULL, or DEFAULT 
formatter.setTimeZone(cal.getTimeZone()); 
String formatted = formatter.format(cal.getTime()); 

ध्यान दें कि आप यहाँ java.text.DateFormat उपयोग करने के लिए है, न कि एंड्रॉयड के लिए अपने (भ्रमित करने वाले नाम) android.text.format.DateFormat की जरूरत है: तो यहाँ अधिक पूर्ण, सामान्य समाधान है।

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