2012-08-20 19 views
24

के साथ यूनिक्स टाइमस्टैम्प को स्ट्रिंग में कनवर्ट करना, एक यूनिक्स टाइमस्टैम्प को डेटाबेस से, किसी दिनांक प्रारूप में स्ट्रिंग में कनवर्ट करने का प्रयास करते समय।जोडा समय

int _startTS = evtResult.getInt("start"); //outputs 1345867200 
Long _sLong = new Long(_startTS); //outputs 1345867200 
//I've also tried: Long _sLong = new Long(_startTS*1000); //outputs 1542436352 
DateTime _startDate = new DateTime(_sLong); //outputs 1970-01-16T08:51:07.200-05:00 

टाइमस्टैम्प के लिए है: Sat, 25 Aug 2012। मुझे नहीं पता कि 1 9 70 हमेशा आउटपुट क्यों होता है इसलिए उम्मीद है कि कोई मुझे बेवकूफ गलती देख सकता है।

उत्तर

51

यूनिक्स समय, सेकंड में है जावा समय मिलीसेकंड

है आप 1000

DateTime _startDate = new DateTime(_sLong * 1000L); 

द्वारा यह कई की आवश्यकता होगी आप देखना चाहें इस answer बाहर

+0

महान काम खूबसूरती से काम करता है! – locrizak

+4

संपादित। आपको लंबे समय तक पूंजी 'एल' का उपयोग करना चाहिए। बहुत अधिक पठनीय। –

3

आप ऐसा करते हैं जब : _startTS*1000, जावा मानता है कि आप एक int चाहते हैं क्योंकि _startTS एक int है (यही कारण है कि मान 1542436352 है)। एक लंबे पहले के रूप में यह कास्टिंग का प्रयास करें:

Long _sLong = new Long(((long)_startTS)*1000); 
5

यूनिक्स समय स्टाम्प सेकंड1970-01-01 00:00:00 के बाद से की एक संख्या है।

DateTime(long instant) कन्स्ट्रक्टर की संख्या मिलीलीस्कोन्ड्स की आवश्यकता है।

long _startTS = ((long) evtResult.getInt("start")) * 1000; 
DateTime _startDate = new DateTime(_startTS); 

संपादित करें: या अपने लंबे समय तक डाली evtResult से बचने के लिए पर उपयोग getLong (..) विधि।

+1

मुझे पता है .. मैंने 1000 से गुणा करने की कोशिश की लेकिन वास्तव में 2018 होने वाला टाइमस्टैम्प। मुझे '* 1000 एल' की आवश्यकता थी और हरथा महान काम करता है। – locrizak

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