आपको अपनी datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
अभिव्यक्ति के साथ एक तरीका या दूसरा समस्या है ।
(1) यदि आप सभी की जरूरत दो सेकंड में अंतर है, तो बहुत ही सरल time.time()
काम करता है।
(2) यदि आप अन्य कार्यों के लिए उन टाइमस्टैम्प का उपयोग कर रहे हैं, तो आपको यह विचार करने की आवश्यकता है कि आप क्या कर रहे हैं, क्योंकि परिणाम में बड़ी गंध है:
gmtime()
UTC में एक समय टपल लौटाता है लेकिन स्थानीय समयmktime()
में एक समय टपल की अपेक्षा करता है।
मैं ऑस्ट्रेलिया के मेलबर्न में हूं, जहां मानक टीबी UTC + 10 है, लेकिन कल सुबह तक डेलाइट सेविंग अभी भी लागू है, इसलिए यह UTC / 11 है। जब मैंने निम्नलिखित को निष्पादित किया, तो यह 2011-04-02T20: 31 स्थानीय समय यहाँ था ... UTC 2011-04-02T09: 31 था
>>> import time, datetime
>>> t1 = time.gmtime()
>>> t2 = time.mktime(t1)
>>> t3 = datetime.datetime.fromtimestamp(t2)
>>> print t0
1301735358.78
>>> print t1
time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=9, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=0) ### this is UTC
>>> print t2
1301700663.0
>>> print t3
2011-04-02 10:31:03 ### this is UTC+1
>>> tt = time.time(); print tt
1301736663.88
>>> print datetime.datetime.now()
2011-04-02 20:31:03.882000 ### UTC+11, my local time
>>> print datetime.datetime(1970,1,1) + datetime.timedelta(seconds=tt)
2011-04-02 09:31:03.880000 ### UTC
>>> print time.localtime()
time.struct_time(tm_year=2011, tm_mon=4, tm_mday=2, tm_hour=20, tm_min=31, tm_sec=3, tm_wday=5, tm_yday=92, tm_isdst=1) ### UTC+11, my local time
आप देखेंगे कि t3, आपकी अभिव्यक्ति का परिणाम UTC + 1 है, जो UTC + (मेरा स्थानीय DST अंतर) प्रतीत होता है ... बहुत सार्थक नहीं है। आपको यह उपयोग करने पर विचार करना चाहिए datetime.datetime.utcnow()
जो डीएसटी / बंद होने पर एक घंटे तक नहीं कूदेंगे और आपको इससे अधिक सटीक दे सकते हैंtime.time()