2010-02-23 11 views
13

को टाइमस्टैम्प स्ट्रिंग परिवर्तित करने के लिए मैं java.util.Date को एक टाइमस्टैम्प स्ट्रिंग परिवर्तित करने के लिए की जरूरत है। उदा .:कैसे java.util.Date

MMDDYYHHMMSSMM-DD-YY HH-MM-SS

कहाँ MM माह है, DD करने के लिए, तारीख है YY वर्ष है, HH घंटे का होता है, MM मिनट है और SS सेकंड है।

उत्तर

28

आप इस तरह यह कर सकते हैं:

DateFormat format = new SimpleDateFormat("MMddyyHHmmss"); 
Date date = format.parse("022310141505"); 

लेकिन मैं दृढ़ता से सुझाव है कि आप Joda Time बजाय का उपयोग करें। यह एक लंबे, लंबे समय से जिस तरह से एक बेहतर दिनांक/समय पुस्तकालय है। विशेष रूप से, formatters/पारसर्स Joda समय में धागे की सुरक्षित हैं, ताकि आप उन्हें स्वतंत्र रूप से और स्थिर का पुन: उपयोग कर सकते हैं; java.text.SimpleDateFormat धागा सुरक्षित नहीं है, तो आप या तो धागा प्रति एक बना सकते हैं या एक synchronized ब्लॉक के साथ यह करने के लिए उपयोग को क्रमानुसार करने की जरूरत है।

+0

सौम्य अनुरोध। क्या आप एक उदाहरण पोस्ट कर सकते हैं। – Manu

+2

वह पहले से ही किया है? – BalusC

+1

मुझे लगता है कि उसका मतलब है जोडा समय का उपयोग कर एक उदाहरण ... – Fortega

1

उपयुक्त प्रारूप स्ट्रिंग के साथ SimpleDateFormat का उपयोग करें (सही प्रारूप अक्षरों, अपरकेस और लोअरकेस का उपयोग करने के लिए सावधान रहें अलग-अलग अर्थ हैं!)।

+0

सौम्य अनुरोध। क्या आप एक उदाहरण पोस्ट कर सकते हैं। – Manu

+0

ऊपर दिए गए जेएसटीएल टैग का उपयोग कैसे करें – Manu

0

tl; डॉ

java.time.LocalDateTime.parse(
    "" , 
    DateTimeFormatter.ofPattern("MMdduuHHmmss") 
).format( 
    DateTimeFormatter.ofPattern("MM-dd-uu HH-mm-ss") 
) 

01-23-18 12-34-56

java.time

आधुनिक दृष्टिकोण java.time कक्षाओं का उपयोग करता है ।

एक स्वरूपण पैटर्न अपने इनपुट स्ट्रिंग के मिलान से परिभाषित करें।

DateTimeFormatter f = DateTimeFormatter.ofPattern("MMdduuHHmmss") ; 

आपके दो अंकों का वर्ष 21 वीं शताब्दी (20xx) के रूप में व्याख्या किया जाएगा।

LocalDateTime के रूप में पार्स क्योंकि आपके इनपुट स्ट्रिंग में समय क्षेत्र या ऑफ़सेट-से-यूटीसी का कोई संकेतक नहीं है।

LocalDateTime ldt = LocalDateTime.parse("" , f) ; 

ldt.toString(): 2018-01-23T12: 34: 56

अपने वांछित प्रारूप में एक स्ट्रिंग उत्पन्न करें।

DateTimeFormatter fOut = DateTimeFormatter.ofPattern("MM-dd-uu HH-mm-ss") ; 
String output = ldt.format(fOut ); 

01-23-18 12-34-56

आईएसओ 8601

अपने प्रारूपों के

दोनों भयानक हैं कई कारणों के लिए।

जब तिथि-समय मूल्यों serializing, संभव मानक ISO 8601 स्वरूपों जब भी इस्तेमाल करते हैं।उन्हें मशीनों द्वारा पार्स करने में आसान, व्यावहारिक, मानव संस्कृतियों द्वारा मनुष्यों द्वारा पढ़ने में आसान बनाने के लिए डिज़ाइन किया गया है।

आपके जैसे समय-समय पर, T मध्य में दिनांक भाग को समय-समय पर अलग करता है।

2018-01-23T12: 34: 56


बारे java.time

java.time ढांचे जावा 8 और बाद में बनाया गया है। ये कक्षाएं परेशान पुराने legacy दिनांक-समय कक्षाएं जैसे java.util.Date, Calendar, & SimpleDateFormat प्रदान करती हैं।

Joda-Time प्रोजेक्ट, अब maintenance mode में, java.time कक्षाओं में माइग्रेशन की सलाह देता है।

और जानने के लिए, Oracle Tutorial देखें। और कई उदाहरणों और स्पष्टीकरणों के लिए स्टैक ओवरफ़्लो खोजें। विशिष्टता JSR 310 है।

जावा.टाइम कक्षाएं कहां प्राप्त करें?

  • Java SE 8, Java SE 9, और बाद में
    • में निर्मित।
    • एक बंडल कार्यान्वयन के साथ मानक जावा एपीआई का हिस्सा।
    • जावा 9 कुछ मामूली विशेषताओं और सुधारों को जोड़ता है।
  • Java SE 6 और Java SE 7
    • java.time कार्यक्षमता की ज्यादातर ThreeTen-Backport में जावा 6 & से 7 वापस भेजा गया है।
  • Android
    • java.time वर्गों के एंड्रॉयड बंडल कार्यान्वयन के बाद के संस्करण।
    • पहले एंड्रॉइड के लिए, ThreeTenABP प्रोजेक्ट थ्रीटेन-बैकपोर्ट (ऊपर उल्लिखित) का अनुकूलन करता है। How to use ThreeTenABP… देखें।

ThreeTen-Extra परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के संभावित भविष्य के जोड़ों के लिए एक सिद्ध भूमि है। आपको यहां कुछ उपयोगी कक्षाएं मिल सकती हैं जैसे Interval, YearWeek, YearQuarter, और more

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