2012-04-23 28 views
30

को टाइमस्टैम्प टाइमस्टैम्प जावास्क्रिप्ट में हमजावास्क्रिप्ट अजगर datetime रूपांतरण

var ts = new Date().getTime() 

का उपयोग उचित तरीके से यह एक अजगर datetime अब तक मैं निम्नलिखित कोड

>>> jsts = 1335205804950 
>>> dt = datetime.datetime.fromtimestamp(jsts/1000) 
>>> dt 
datetime.datetime(2012, 4, 24, 0, 30, 4) 

मैं उपयोग करने के लिए कन्वर्ट करने के लिए क्या है प्राप्त करने के लिए 1000 से टाइमस्टैम्प विभाजित करें क्योंकि मुझे

ValueError        Traceback (most recent call last) 
1 d = datetime.datetime.fromtimestamp(a) 
ValueError: year is out of range 

सुल्तान जैसे त्रुटि मिलती है।

उत्तर

48

आपकी वर्तमान विधि सही है, 1000 से विभाजित करना आवश्यक है क्योंकि आपकी जावास्क्रिप्ट मिलीसेकंड में टाइमस्टैम्प देता है, और datetime.datetime.fromtimestamp() सेकेंड में टाइमस्टैंप की अपेक्षा करता है।

मिलीसेकंड सटीकता आप 1000.0 द्वारा विभाजित कर सकते हैं बनाए रखने के लिए है, तो आप पूर्णांक विभाजन के बजाय नाव विभाजन का उपयोग कर रहे हैं:

>>> dt = datetime.datetime.fromtimestamp(jsts/1000.0) 
>>> dt 
datetime.datetime(2012, 4, 23, 11, 30, 4, 950000) 
+1

शुक्र है, यह पायथन 3 में आवश्यक नहीं है। – delnan

+0

धन्यवाद @ एफजे :)। – sultan

+0

@ डेलनान मेरे पास Python3 में एक ही समस्या है: 'datetime.fromtimestamp (1485373592240)' 1000' – jjj

1

जिस तरह से आप, यह सही तरीका है इसलिए करते हैं क्योंकि js तारीख में मिलीसेकेंड शामिल /पहर। जहां तक ​​मुझे पता है, पायथन (और PHP), नहीं। अधिक सटीकता के लिए आप /1000.0 का उपयोग कर सकते हैं।

0

दूसरों के लिए अभी भी एक त्रुटि हो रही है: मेरे पास एक समान समस्या थी लेकिन यूनिक्स टाइमस्टैम्प माइक्रोसेकंड में था, यानी मुझे सही परिणाम प्राप्त करने के लिए टाइमस्टैम्प को 1000000 तक विभाजित करना पड़ा।

dt = datetime.datetime.fromtimestamp(1502360499615921) 
संबंधित मुद्दे