आप पायथन time.struct_time
ऑब्जेक्ट को ऑब्जेक्ट में कैसे बदलते हैं datetime.datetime
?
मेरे पास एक पुस्तकालय है जो पहले एक और दूसरा पुस्तकालय प्रदान करता है जो दूसरा चाहता है।
आप पायथन time.struct_time
ऑब्जेक्ट को ऑब्जेक्ट में कैसे बदलते हैं datetime.datetime
?
मेरे पास एक पुस्तकालय है जो पहले एक और दूसरा पुस्तकालय प्रदान करता है जो दूसरा चाहता है।
जवाबों:
एपच के बाद के समय (स्थानीय समय में) को सेकंड में बदलने के लिए time.mktime () का उपयोग करें , फिर डेटाटाइम ऑब्जेक्ट प्राप्त करने के लिए datetime.fromtimestamp () का उपयोग करें ।
from datetime import datetime
from time import mktime
dt = datetime.fromtimestamp(mktime(struct))
tm_isdst
डेटा खो देगा ? मुझे ऐसा लगता है, परिणामी डेटाटाइम ऑब्जेक्ट भले ही उस None
पर वापस लौटने के लिए भोली हो । .dst()
struct.tm_isdst
1
mktime()
इसे ध्यान tm_isdst
में रखना चाहिए और अजगर ने CPython पर time.mktime()
C mktime()
फ़ंक्शन को कॉल किया । mktime()
गलत स्थान का चयन तब कर सकते हैं जब वह अस्पष्ट हो (जैसे, एंड-ऑफ-डीएसटी ("फॉल बैक") संक्रमण के दौरान) यदि दिया गया struct.tm_isdst
है -1
या यदि mktime()
दिए गए प्लेटफ़ॉर्म पर इनपुट को अनदेखा करता हैtm_isdst
। इसके अलावा, अगर स्थानीय टाइमज़ोन में अतीत में अलग-अलग utc ऑफ़सेट थे और C mktime()
एक ऐतिहासिक tz डेटाबेस का उपयोग नहीं करता है जो पुराने utc ऑफ़सेट मान प्रदान कर mktime()
सकता है तो गलत (उदाहरण के लिए, एक घंटे के द्वारा) मान भी लौटा सकता है।
mktime()
उपेक्षा नहीं करता tm_isdst
दिए गए मंच पर (यह मेरा पर करता है) तो fromtimestamp()
निश्चित रूप से जानकारी खो देता है: लौटे अनुभवहीन datetime
वस्तु स्थानीय समय का प्रतिनिधित्व करने अस्पष्ट (टाइमस्टैम्प हो सकता है -> स्थानीय समय नियतात्मक (है हम छलांग सेकंड की अनदेखी करता है, तो), लेकिन local time -> timestamp may be ambiguous e.g., during end-of-DST transition). Also,
अगर यह एक ऐतिहासिक tz डेटाबेस का उपयोग नहीं करता है तो fromtimestamp () `गलत utc ऑफ़सेट चुन सकता है।
ऐशे ही:
>>> structTime = time.localtime()
>>> datetime.datetime(*structTime[:6])
datetime.datetime(2009, 11, 8, 20, 32, 35)
*
और **
वाक्यविन्यास को अलग करने के लिए आपको अलग-अलग तर्क देने के लिए किसी सूचीबद्ध या तानाशाही प्रकार की वस्तु का विस्तार करने की अनुमति देता है - यह पायथन प्यारेपन के मेरे पसंदीदा टुकड़ों में से एक है। अधिक जानकारी के लिए docs.python.org/2/tutorial/… देखें
t=time.strptime("30 Jun 1997 22:59:60", "%d %b %Y %H:%M:%S"); datetime.datetime(*t[:6])
datetime
: datetime(*t[:5]+(min(t[5], 59),))
जैसे, स्वीकार करना "2015-06-30 16:59:60 PDT"
।
यह आपके प्रश्न का सीधा उत्तर नहीं है (जिसका उत्तर पहले ही दिया जा चुका है)। हालाँकि, कई बार मुझे मौलिक रूप से कई बार काटने के बाद भी, मैं इस बात पर जोर नहीं दे सकता कि यह आपके समय को देखने के लिए आपको घेर लेगा कि आपका time.struct_time ऑब्जेक्ट क्या प्रदान कर रहा है, बनाम अन्य समय क्षेत्र क्या हो सकते हैं।
मान लें कि आपके पास एक time.struct_time ऑब्जेक्ट है, और कुछ अन्य दिनांक / समय स्ट्रिंग, दोनों की तुलना करें, और सुनिश्चित करें कि आप डेटा नहीं खो रहे हैं और अनजाने में एक भोली डेटाइम ऑब्जेक्ट बना रहे हैं, जब आप अन्यथा कर सकते हैं।
उदाहरण के लिए, उत्कृष्ट फीडपर्सर मॉड्यूल एक "प्रकाशित" फ़ील्ड लौटाएगा और अपने "प्रकाशित_प्रदर्शित" फ़ील्ड में एक time.struct_time ऑब्जेक्ट वापस कर सकता है:
time.struct_time(tm_year=2013, tm_mon=9, tm_mday=9, tm_hour=23, tm_min=57, tm_sec=42, tm_wday=0, tm_yday=252, tm_isdst=0)
अब ध्यान दें कि आपको वास्तव में "प्रकाशित" फ़ील्ड के साथ क्या मिलता है।
Mon, 09 Sep 2013 19:57:42 -0400
द्वारा स्टॉलमैन की दाढ़ी! समयक्षेत्र की जानकारी!
इस मामले में, आलसी आदमी समय की जानकारी रखने के लिए उत्कृष्ट डेट्यूटिल मॉड्यूल का उपयोग करना चाह सकता है:
from dateutil import parser
dt = parser.parse(entry["published"])
print "published", entry["published"])
print "dt", dt
print "utcoffset", dt.utcoffset()
print "tzinfo", dt.tzinfo
print "dst", dt.dst()
जो हमें देता है:
published Mon, 09 Sep 2013 19:57:42 -0400
dt 2013-09-09 19:57:42-04:00
utcoffset -1 day, 20:00:00
tzinfo tzoffset(None, -14400)
dst 0:00:00
एक तो UTC या जो कुछ भी आपको लगता है कि सभी समय को सामान्य करने के लिए टाइमजोन-जागरूक डेटाटाइम ऑब्जेक्ट का उपयोग कर सकता है।
*_parsed
फीडपार्स किए गए सभी फ़ील्ड पहले से ही UTC के लिए सामान्यीकृत हैं क्योंकि दिनांक पार्सिंग दस्तावेज़ में जाँच की जा सकती है ताकि यह निरर्थक हो।
datetime
वस्तु में रखने के बारे में है, जो feedparser
कच्चे तार की तारीखों को पार करते समय खो जाती है।