2011-05-25 18 views
18

से एमएम/डीडी/वाई वाई प्रारूप में दिनांक कैसे प्राप्त कर सकता हूं मैं टाइमस्टैम्प से MM/DD/YY प्रारूप में दिनांक प्राप्त करना चाहता हूं।मैं टाइमस्टैम्प

मैं नीचे दी गई विधि का इस्तेमाल किया है, लेकिन यह उचित उत्पादन

final Calendar cal = Calendar.getInstance(); 
cal.setTimeInMillis(Long.parseLong(1306249409));  
Log.d("Date--",""+cal.DAY_OF_MONTH);  
Log.d("Month--",""+cal.MONTH);  
Log.d("Year--",""+cal.YEAR); 

नहीं देता है लेकिन इसकी तरह उत्पादन देता

नीचे

तिथि - 5 महीना - 2 वर्ष - 1

सही तिथि 24 मई 2010 है टाइमस्टैम्प के लिए - 130624 940 9

नोट - टाइमस्टैम्प एक webservice द्वारा प्राप्त किया जाता है जिसका उपयोग मेरे आवेदन में किया जाता है।

+1

क्या Android के पास SimpleDateFormat है? –

+0

वास्तव में 24 मई 2010 है, 2011 नहीं? –

उत्तर

22

बेहतर दृष्टिकोण

बस अपने दृष्टिकोण में SimpleDateFormat

new SimpleDateFormat("MM/dd/yyyy").format(new Date(timeStampMillisInLong)); 

गलती का प्रयोग करें

DAY_OF_MONTH, MONTH, .. आदि बस लगातार पूर्णांक मूल्य Calendar वर्ग आंतरिक रूप से उपयोग किया जाता है

आप कर सकते हैं द्वारा cal.get(Calendar.DATE)

+6

कृपया यह इंगित करने के लिए कि निम्न संख्या एक शाब्दिक 'लंबी' है, कृपया निम्न-केस 'एल' का कभी भी उपयोग न करें; हमेशा ऊपरी मामले 'एल' का प्रयोग करें। 'L' अंक' 1' की तरह दिखता है। – Jesper

18

उपयोग SimpleDateFormat

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date date = new Date(); 
String time = sdf.format(date); 
7

क्या गलत है तारीख cal द्वारा प्रतिनिधित्व मिलता है:

Calendar.DAY_OF_MONTH , Calendar.MONTH आदि स्थिर स्थिरांक हैं जो उन विशेष क्षेत्रों तक पहुंचने के लिए उपयोग किए जाते हैं। (वे चाहे आप कुछ भी setTimeInMillis प्रदान स्थिर रहेंगे,।)


इसे कैसे हल करने के लिए:

उन विशेष क्षेत्रों प्राप्त करने के लिए आप इस तरह .get(int field)-method उपयोग कर सकते हैं,:

Log.d("Month--",""+cal.get(Calendar.MONTH)); 

जैसा कि अन्य ने इंगित किया है कि लॉगिंग की तारीख स्वरूपित करने के लिए और अधिक सुविधाजनक तरीके हैं। उदाहरण के लिए आप SimpleDateFormat या उदाहरण के लिए उपयोग कर सकते हैं, जैसे कि लॉगिंग करते समय आमतौर पर करते हैं, एक प्रारूप-स्ट्रिंग और String.format(formatStr, Calendar.getInstance())

+0

आपके उत्तर के लिए धन्यवाद, मैं आपके उत्तर के अनुसार बदलता हूं लेकिन फिर मुझे महीना - 0, वर्ष - 1 9 70 और दिन - 01 –

+0

@ मोहित कानाडा मिलता है, कुछ फ़ील्ड 0-अनुक्रमित होते हैं। @Grzegorz Szpetkowski उत्तर इसे ध्यान में रखता है। उदाहरण के लिए आप 'SimpleDateFormat' या' String.format' विधि 'के लिए शायद बेहतर उपयोग कर रहे हैं। – aioobe

1

जावा समय के प्रतिनिधित्व के लिए 1 जनवरी 1 9 70 से मिलीसेकंड की संख्या का उपयोग करता है। यदि आप 130624 9 40 9 मिलीसेकंड द्वारा प्रतिनिधित्व किए गए समय की गणना करते हैं, तो आप पाएंगे कि यह केवल 362 दिन है, इसलिए आपकी धारणाएं गलत हैं।

इसके अलावा, cal.DAY_OF_MONTH स्थिर रहता है। महीने के दिन (दिनांक के अन्य भागों के लिए) प्राप्त करने के लिए cal.get(Calendar.DAY_OF_MONTH) का उपयोग करें।

3
 Date date = new Date(System.currentTimeMillis()); 
    SimpleDateFormat formatter = new SimpleDateFormat("MM/dd/yy"); 
    String s = formatter.format(date); 
    System.out.println(s); 
2
TimeZone utc = TimeZone.getTimeZone("UTC"); // avoiding local time zone overhead 
final Calendar cal = new GregorianCalendar(utc); 

// always use GregorianCalendar explicitly if you don't want be suprised with 
// Japanese Imperial Calendar or something 

cal.setTimeInMillis(1306249409L*1000); // input need to be in miliseconds 

Log.d("Date--",""+cal.get(Calendar.DAY_OF_MONTH)); 

Log.d("Month--",""+cal.get(Calendar.MONTH) + 1); // it starts from zero, add 1 

Log.d("Year--",""+cal.get(Calendar.YEAR)); 
+0

+1, प्रश्न का उत्तर अच्छी तरह से करें। – aioobe

0

उपयोग String.format जो विभिन्न स्वरूपों में दिनांक/समय स्ट्रिंग के लिए लंबे समय तक (मिलीसेकेंड) में परिवर्तित करने में सक्षम है:

String str; 
    long time = 1306249409 * 1000L; // milliseconds 
    str = String.format("%1$tm/%1$td/%1$ty", time); // 05/24/11 
    str = String.format("%tF", time);    // 2011-05-24 (ISO 8601) 
    str = String.format("Date--%td", time);   // Date--24 
    str = String.format("Month--%tm", time);   // Month--05 
    str = String.format("Year--%ty", time);   // Year--11 

प्रलेखन: format string

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