पायथन में, आप एक 'डेटाइम' ऑब्जेक्ट के लिए युग के बाद से सेकंड कैसे परिवर्तित करते हैं?


248

timeमॉड्यूल अवधि के बाद सेकंड का उपयोग कर प्रारंभ किया जा सकता है:

>>> import time
>>> t1=time.gmtime(1284286794)
>>> t1
time.struct_time(tm_year=2010, tm_mon=9, tm_mday=12, tm_hour=10, tm_min=19, 
                 tm_sec=54, tm_wday=6, tm_yday=255, tm_isdst=0)

क्या किसी datetime.datetimeवस्तु को उसी तरह से इनिशियलाइज़ करने का एक सुंदर तरीका है ?


जवाबों:


404

datetime.datetime.fromtimestamp करेंगे, यदि आप समय क्षेत्र जानते हैं, तो आप उसी तरह का उत्पादन कर सकते हैं time.gmtime

>>> datetime.datetime.fromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 11, 19, 54)

या

>>> datetime.datetime.utcfromtimestamp(1284286794)
datetime.datetime(2010, 9, 12, 10, 19, 54)

42
विचित्र रूप से, datetime.utcfromtimestampएक भोले टाइमस्टैम्प बनाता है। मुझे एक जागरूक डेटाइम बनाने के लिए import pytzऔर उपयोग datetime.fromtimestamp(1423524051, pytz.utc)करना था ।
मैट

6
एक फॉलो-ऑन के ऊपर करने के लिए, अजगर> = 3.2 के साथ आप आयात की जरूरत नहीं है के रूप में pytzआप केवल करने की जरूरत है - पुस्तकालय अगर आप केवल यूटीसी टाइमस्टैम्प चाहते from datetime import datetime, timezone: और फिर फोन के रूप में इस प्रकार है datetime.fromtimestamp(1423524051, timezone.utc)। इसने अतिरिक्त पुस्तकालय को कई बार बचाया है जब मुझे केवल यूटीसी टाइमज़ोन की आवश्यकता है pytz
phouse512

38

सेकंड अवधि के बाद करने के लिए datetimeकरने के लिए strftime:

>>> ts_epoch = 1362301382
>>> ts = datetime.datetime.fromtimestamp(ts_epoch).strftime('%Y-%m-%d %H:%M:%S')
>>> ts
'2013-03-03 01:03:02'

यह datetime.fromtimestamp (1579366345) .strftime ('% Y-% m-% d% H:% M:% S') होना चाहिए
vml19

26

डॉक्स से, एक टाइमजोन जागरूक डेटाइम ऑब्जेक्ट को सेकंड से प्राप्त करने का अनुशंसित तरीका है:

अजगर 3 :

from datetime import datetime, timezone
datetime.fromtimestamp(timestamp, timezone.utc)

पायथन 2 , का उपयोग कर pytz:

from datetime import datetime
import pytz
datetime.fromtimestamp(timestamp, pytz.utc)

आपके उपशीर्षक में दस्तावेज़ का लिंक ("पायथन 3", "पायथन 2") उपयोगी होगा - और मैं उनके आदेश को बदलने की भी सलाह देता हूं।
एडम मटन

अपडेट किया गया। ऑर्डर को वही छोड़कर, क्योंकि वह पायथन डॉक्स से मेल खाता है।
42 पर मीस्ट्रो

तुम pytzसिर्फ utctzinfo वस्तु प्राप्त करने की जरूरत नहीं है । यह यह अपने आप को बनाने के लिए आसान है
JFS

9

ध्यान दें कि datetime.datetime। fromtimestamp (टाइमस्टैम्प) और। utcfromtimestamp (टाइमस्टैम्प) 1 जनवरी, 1970 से पहले की तारीखों के लिए खिड़कियों पर विफल रहता है, जबकि नकारात्मक यूनिक्स टाइमस्टैम्प यूनिक्स-आधारित प्लेटफार्मों पर काम करते हैं। डॉक्स यह कहते हैं:

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

अंक 1646728 भी देखें


: ओ) हाँ, अभी भी कुछ 23 साल इसे ठीक करने के लिए
user3666197

5
आप इसका उपयोग कर सकते हैं utc_time = datetime(1970,1,1) + timedelta(seconds=timestamp), इसे हल करने के लिए।
०fs:
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.