एक datetime वस्तु से एक समय क्षेत्र (tzinfo) निकालने के लिए एक तीर ऑब्जेक्ट को एक डेटाटाइम ऑब्जेक्ट में कनवर्ट करना, फिर उपर्युक्त उदाहरण के समान काम करना।
# <Arrow [2014-10-09T10:56:09.347444-07:00]>
arrowObj = arrow.get('2014-10-09T10:56:09.347444-07:00')
# datetime.datetime(2014, 10, 9, 10, 56, 9, 347444, tzinfo=tzoffset(None, -25200))
tmpDatetime = arrowObj.datetime
# datetime.datetime(2014, 10, 9, 10, 56, 9, 347444)
tmpDatetime = tmpDatetime.replace(tzinfo=None)
आप ऐसा क्यों करेंगे? एक उदाहरण यह है कि MySQL अपने DATETIME प्रकार के साथ टाइमज़ोन का समर्थन नहीं करता है। तो ORM की तरह sqlalchemy का उपयोग करके आप टाइमज़ोन को हटा देंगे जब आप इसे datetime.datetime
ऑब्जेक्ट डेटाबेस में डालने के लिए देते हैं। समाधान आपके datetime.datetime
ऑब्जेक्ट को यूटीसी में परिवर्तित करना है (इसलिए आपके डेटाबेस में सबकुछ यूटीसी है क्योंकि यह टाइमज़ोन निर्दिष्ट नहीं कर सकता है) या तो इसे डेटाबेस में डालें (जहां टाइमज़ोन को हटा दिया जाता है) या इसे स्वयं हटा दें। यह भी ध्यान रखें कि datetime.datetime
ऑब्जेक्ट्स की तुलना नहीं कर सकता है, जहां एक टाइमज़ोन जागरूक है और दूसरा टाइमज़ोन बेवकूफ है।
##############################################################################
# MySQL example! where MySQL doesn't support timezones with its DATETIME type!
##############################################################################
arrowObj = arrow.get('2014-10-09T10:56:09.347444-07:00')
arrowDt = arrowObj.to("utc").datetime
# inserts datetime.datetime(2014, 10, 9, 17, 56, 9, 347444, tzinfo=tzutc())
insertIntoMysqlDatabase(arrowDt)
# returns datetime.datetime(2014, 10, 9, 17, 56, 9, 347444)
dbDatetimeNoTz = getFromMysqlDatabase()
# cannot compare timzeone aware and timezone naive
dbDatetimeNoTz == arrowDt # False, or TypeError on python versions before 3.3
# compare datetimes that are both aware or both naive work however
dbDatetimeNoTz == arrowDt.replace(tzinfo=None) # True