मैं मिलीसेकंड से पायथन में डेटाइम कैसे बनाऊं?


142

मैं java.util.Date (मिलीसेकंड) द्वारा जावा में एक समान दिनांक ऑब्जेक्ट बना सकता हूं । मैं पायथन में तुलनीय कैसे बनाऊं?

दिनांक ऑब्जेक्ट आवंटित करता है और मानक आधार समय "युग" के रूप में जाना जाता है, अर्थात् 1 जनवरी, 1970, 00:00:00 GMT के बाद से निर्दिष्ट संख्या का प्रतिनिधित्व करने के लिए इसे आरंभ करता है।

जवाबों:


215

बस इसे टाइमस्टैम्प में परिवर्तित करें

datetime.datetime.fromtimestamp(ms/1000.0)

17
एक नोट - पायथन 3 में, (/) फ्लोटिंग-पॉइंट डिवीजन करेगा। अभिन्न विभाजन करने के लिए, (//) का उपयोग करें।
— जॉन मिलिकिन

3
क्या आप वास्तव में वैसे भी फ्लोट डिवीजन नहीं चाहते हैं? अन्यथा आप 1 सेकंड (टाइमस्टैम्प के आंशिक भाग में आयोजित) के नीचे किसी भी परिशुद्धता को खो रहे हैं। एमएस / 1000.0 का उपयोग करने के लिए बेहतर बिना किसी छंटनी के।
— ब्रायन

4
हालांकि निश्चित रूप से डेटाइम हमेशा इसका समर्थन करता है? यदि हमें उप-सेकंड सटीक मिला है, तो इसे फेंकना गलत है। अगर हमारे पास कोई नुकसान नहीं हुआ है - हम बस उस मूल परिशुद्धता को बनाए रखते हैं।
— ब्रायन

30
तैरने का उपयोग किए बिना सटीक रखने के लिए, आप यह भी कर सकते हैं:datetime.utcfromtimestamp(ms//1000).replace(microsecond=ms%1000*1000)
— tsg

2
इस समाधान के साथ एक और समस्या: "fromtimestamp () ValueError बढ़ा सकती है, अगर टाइमस्टैम्प प्लेटफ़ॉर्म C localtime () या gmtime () फ़ंक्शन द्वारा समर्थित मानों की श्रेणी से बाहर है। 1970 में इसे वर्ष के लिए प्रतिबंधित किया जाना आम है। 2038 " - आपका कोड कितने समय तक चलने की उम्मीद है ???
— माइक कृंतक

12

इस बारे में क्या? मुझे लगता है कि यह 1970 से पहले और 2038 के बाद की तारीखों को संभालने के लिए गिना जा सकता है।

target_date_time_ms = 200000 # or whatever
base_datetime = datetime.datetime( 1970, 1, 1 )
delta = datetime.timedelta( 0, 0, 0, target_date_time_ms )
target_date = base_datetime + delta

जैसा कि पायथन मानक में वर्णित है:

fromtimestamp () ValueError बढ़ा सकता है, अगर टाइमस्टैम्प प्लेटफ़ॉर्म C Localtime () या gmtime () फ़ंक्शन द्वारा समर्थित मानों की श्रेणी से बाहर है। 1970 में इसे 2038 तक सीमित रखना आम बात है।


6
आप इस्तेमाल कर सकते हैंutc_time = datetime(1970, 1, 1) + timedelta(milliseconds=millis)
— JFS

9

पंडों का उपयोग करने के कारण थोड़ा भारी लेकिन काम करता है:

import pandas as pd
pd.to_datetime(msec_from_java, unit='ms').to_pydatetime()

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.