2015-06-23 4 views
6

मेरे पास जेसन में एक टाइमस्टैम्प है जो कि लिनक्स सर्वर से है। मैं इसे जावा का उपयोग कर एक साधारण दिनांक समय प्रारूप में परिवर्तित करना चाहता हूं। dd-mm-YYYY HH: mm:जेएसओएन में टाइमस्टैम्प को जावा में सामान्य तिथि और समय में कैसे परिवर्तित करें?

मैं दिनांक और समय निम्न स्वरूप में की जरूरत है एस एस

यहाँ

है मेरी JSON डेटा:

[ 
    { 
    "batch_date": 1419038000 
    }, 
    { 
    "batch_date": 1419037000 
    } 
] 
+0

आप जेसन को कैसे पार्स कर रहे हैं? जीसन या जैक्सन को देखें – beresfordt

+1

@pavankumarparasa कृपया अतिरिक्त जानकारी और डेटा पोस्ट करने से बचें। अपनी समस्या को प्रदर्शित करने के लिए न्यूनतम परिदृश्य को अपने परिदृश्य को कम करें। देखें [न्यूनतम, पूर्ण और सत्यापन योग्य उदाहरण कैसे बनाएं] (http://stackoverflow.com/help/mcve)। –

उत्तर

7

बैच तारीख

"batch_date": 1419038000, 

युग से सेकंड की तरह दिखता है,

तो

new Date (batch_date * 1000); 

तो SimpleDateFormat का उपयोग चाल करना चाहिए

SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 

- कोड -

long batch_date = 1419038000; 
    Date dt = new Date (batch_date * 1000); 

    SimpleDateFormat sfd = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss"); 
    System.out.println(sfd.format(dt)); 

- उत्पादन -

20-12-2014 10:13:20 
+0

आपका मतलब है 'एचएच', नहीं' एचएच'। –

+0

निश्चित धन्यवाद –

+0

@ScaryWombat क्या हम टाइमस्टैम्प पढ़ सकते हैं? इन डेटफॉर्मेट्स का उपयोग किए बिना। मेरा मतलब है कि इसे देखकर, क्या हम कह सकते हैं कि कौन सा वर्ष या महीना या तारीख जैसा दिख रहा है। – Prabs

-3

जब हम पढ़ चाहते हैं/एक पार्स स्ट्रिंग मान तिथि के रूप में, हमें उस इनपुट स्ट्रिंग के दिनांक प्रारूप को जानना चाहिए, अन्यथा हमें गलत दा मिल जाएगा ते मूल्य

बैच_डेट: 1419038000 इस मूल्य का दिनांक प्रारूप क्या है?

यदि हम आपके मामले में डीडी-एमएम-वाईई एचएच: एमएम: एसएस 'के रूप में आवश्यक प्रारूप में दिनांक मान प्राप्त करना चाहते हैं। दो संभावित तरीके हैं।

1) अनुरोध बैच_डेट मूल्य आपके आवश्यक प्रारूप में होना चाहिए। या

2) यदि batch_date मान एक और प्रारूप है, तो हमें मूल प्रारूप को जानना चाहिए, और सरल प्रारूप के साथ मूल प्रारूप के साथ दिनांक वस्तु बनाना चाहिए और फिर इसे किसी अन्य SimpleDateFormat प्रारूप विधि का उपयोग करके आवश्यक प्रारूप में परिवर्तित करना चाहिए।

3

नो डेटा प्रकार

के रूप में "JSON टाइमस्टैम्प" जैसी कोई चीज नहीं है। JSON में very few defined data types है। उनमें से कोई डेट-टाइम प्रकार नहीं है।

डरावना Wombat राज्यों द्वारा correct Answer के रूप में, आपका नंबर जाहिरा तौर पर यूनिक्स काल से पूरे सेकंड की गिनती की 1970 java.util.Date वर्ग Unix epoch के बाद मिलीसेकेंड के रूप में समय को ट्रैक करता है, बल्कि पूरे सेकंड से है। तो आपको 1,000 से गुणा करने की जरूरत है। आपको (32-बिट) के बजाय long पूर्णांक (64-बिट) से निपटने की भी आवश्यकता है। संख्यात्मक अक्षरों में एक अपरकेस L संलग्न करें, और long के रूप में किसी भी चर घोषित करें।

java.util.Date/. कैलेंडर कैलेंडर कुख्यात परेशानी हैं। अब वे java.time package द्वारा जावा 8 और बाद में, और/या तृतीय पक्ष Joda-Time लाइब्रेरी में निर्मित किए गए हैं।

विभिन्न जेएसओएन-प्रसंस्करण पुस्तकालय जावा.टाइम या जोडा-टाइम ऑब्जेक्ट्स बनाने के लिए कन्वर्टर्स का समर्थन करते हैं। या आप नीचे दिखाए गए अपने कोड में एक रूपांतरण कर सकते हैं।

ध्यान रखें कि जावा.टाइम और जोडा-टाइम दोनों समय क्षेत्र निर्दिष्ट करने का समर्थन करते हैं। नीचे दिए गए कोड प्रदर्शन उद्देश्यों के लिए यूटीसी असाइन करते हैं, लेकिन आप अपना वांछित/अपेक्षित क्षेत्र असाइन कर सकते हैं।

Joda समय

यहाँ Joda-Time 2.8.1 में कुछ कोड या तो सेकंड या मिलीसेकेंड के रूप में अपने इनपुट संख्या के उपयोग दिखा है।

long secondsSinceEpoch = 1419038000L; 
DateTime dateTimeSeconds = new DateTime(secondsSinceEpoch , DateTimeZone.UTC); 
DateTime dateTimeMillis = new DateTime(secondsSinceEpoch * 1000L , DateTimeZone.UTC); // Note the crucial "L" appended to the numeric literal. 

कंसोल पर डंप करें।

System.out.println("dateTimeSeconds: " + dateTimeSeconds); 
System.out.println("dateTimeMillis: " + dateTimeMillis); 

रन करते समय।

dateTimeSeconds: 1970-01-17T10:10:38.000Z 
dateTimeMillis: 2014-12-20T01:13:20.000Z 

java.time

ऊपर के समान कोड है, लेकिन जावा 8. की

Instant instant = Instant.ofEpochSecond(1419038000L); 
ZonedDateTime zdtUtc = ZonedDateTime.ofInstant(instant , ZoneOffset.UTC); 
ZonedDateTime zdtMontréal = zdtUtc.withZoneSameInstant(ZoneId.of("America/Montreal")); 

डंप java.time का उपयोग कर सांत्वना देने।

System.out.println("zdtUtc: " + zdtUtc); 
System.out.println("zdtMontréal: " + zdtMontréal); 

रन करते समय।

zdtUtc: 2014-12-20T01:13:20Z 
zdtMontréal: 2014-12-19T20:13:20-05:00[America/Montreal] 
+0

मेरा मतलब है ... मेरे पास जेसन –

+0

में टाइमस्टैम्प है टाइम ज़ोन के बारे में टिप्पणी के लिए अच्छी जानकारी! मैं सोच रहा था कि मैं समय के लिए ** 01 **: 13: 20.000Z और ** ** ** ** 13:20 (डरावनी Wombat के रूप में) क्यों प्राप्त करता हूं! – Didier68

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

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