डेटाइम: टाइमस्टैम्प ऑफसेट के साथ टाइमस्टैम्प प्राप्त करें
मैं निम्नलिखित प्रारूपों में तारीखों से टाइमस्टैम्प प्राप्त करना चाहता हूं:
Mon, 23 Nov 2020 19:00:00 GMT
Mon, 23 Nov 2020 20:00:00 +0100
datetimeवस्तुओं को दिनांक बदलने के लिए मैं निम्नलिखित कथनों का उपयोग कर रहा हूं :
dateobj = datetime.datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %Z')
dateobj = datetime.datetime.strptime(date, '%a, %d %b %Y %H:%M:%S %z')
लेकिन .timestamp()विधि का उपयोग करते हुए , युग से अलग-अलग सेकंड मुद्रित होते हैं। %Zनिर्देश datetimeवस्तु में टाइमज़ोन की जानकारी क्यों नहीं जोड़ता है ? मैं खाते में टाइमज़ोन कैसे प्राप्त कर सकता हूं, इसलिए टाइमस्टैम्प बराबर है?
जवाब
कृपया ध्यान दें कि पायथन में असंगत डेटाटाइम पार्स समयक्षेत्र । आपकी समस्या है %Z, यह बनाता strptime स्वीकार विशेष स्ट्रिंग (जीएमटी, UTC और में time.tzname किसी भी मूल्य - डॉक्स ), लेकिन वास्तव में इसके बारे में कुछ भी बाहर नहीं है। लौटी डेटाइम ऑब्जेक्ट भोली है - यही कारण है कि पायथन को स्थानीय समय मान लिया जाएगा यदि आप timestamp()इसे विधि कहते हैं ।
आप इसके बजाय खजूर के पार्सर का उपयोग कर सकते हैं:
from dateutil.parser import parse
for s in ("Mon, 23 Nov 2020 19:00:00 GMT", "Mon, 23 Nov 2020 20:00:00 +0100"):
dt = parse(s)
print(repr(dt), dt.timestamp())
# datetime.datetime(2020, 11, 23, 19, 0, tzinfo=tzutc()) 1606158000.0
# datetime.datetime(2020, 11, 23, 20, 0, tzinfo=tzoffset(None, 3600)) 1606158000.0