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


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.