如何从日期时间对象中删除pytz时区?

乔纳森:

有没有一种简单的方法可以从pytz datetime对象中删除时区?
例如dtdt_tz在此示例中进行重构

>>> import datetime
>>> import pytz
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2012, 6, 8, 9, 27, 32, 601000)
>>> dt_tz = pytz.utc.localize(dt)
>>> dt_tz
datetime.datetime(2012, 6, 8, 9, 27, 32, 601000, tzinfo=<UTC>)
user1094786:

要从日期时间对象中删除时区(tzinfo):

# dt_tz is a datetime.datetime object
dt = dt_tz.replace(tzinfo=None)

如果您使用的是诸如arrow的库,则可以通过简单地将arrow对象转换为datetime对象,然后执行与上述示例相同的操作来删除时区。

# <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对象转换为UTC(由于无法指定时区,因此数据库中的所有内容均为UTC),然后将其插入数据库(无论如何都删除了时区),也可以自行删除。还要注意,您不能比较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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从日期时间对象中删除pytz时区?

使用pytz进行日期时间时区转换

如何在Django中显示不同时区中的所有日期时间对象

如何从日期时间字符串中删除其他时区添加的信息

Python - 如何从日期时间对象中去除时区信息

MomentJS从日期对象中删除时间(javascript)

尝试从日期时间对象中删除秒数

检查日期是否在没有pytz的时区的夏时制中

如何在python中识别未知的日期时间时区

如何在python中识别未知的日期时间时区

访问日期时间对象的时区信息

如何在Python中打印出时间对象的时区?

从Python中的时区感知日期时间对象获取UTC时间戳

如何检查当前日期/时间是否在可变时区中超过了设置的日期/时间?

无论计算机中设置的日期时间如何,获取指定时区的日期时间

如何仅在DateTime对象中的C#中删除日期的时间部分?

与pytz时区的日期时间。不同的偏移量取决于tzinfo的设置方式

如何从javascript中的对象中删除时间?

如何从python中的对象中删除时间

如何从数组中检索日期时间对象

如何从SQL中的日期/时间字段中删除时间戳?

如何从Big Query中的UTC时间戳显示Data Studio中本地时区的日期/时间

如何使用正确的时区检索日期时间

如何在本地时区打印日期时间?

如何获取 AEST 时区的日期和时间?

如何基于时区获取日期时间

Python pytz时区与UTC时间相同

字符串中的日期时间时区

如何在CEST和UTC时区之间转换日期时间对象