- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
timezones() 和日期时间是否可能在时间等方面与我的操作系统发生冲突?
起初这是一个愚蠢的问题,因为我遇到了这个问题,但我看不出它发生的原因或发生的位置。
看这个:
def parse_datetime(a_datetime, account):
tz = pytz.timezone(account.timezone_name)
return datetime.astimezone(parser.parse(a_datetime), tz)
这个函数应该简单地返回一个漂亮的日期时间对象作为 timezone(),就是这样!但是不要!
我所知道的是我收到了这条消息:astimezone() 不能应用于 naive datetime()
因为我有 friend 具有相同的功能并且在他们的 PC 上代码运行正常,但在我的情况下却不能。
推测是:您机器的配置有问题...但是,不确定。
如果有其他人遇到过这个问题并且知道它只是阅读这里的内容,那么,如果你告诉我就好了,我会很高兴。提前致谢!
最佳答案
您使用错误的方法将时区附加到 datetime
对象。
如 pytz
page 中所述你想在 datetime
对象上调用该方法,而不是在类上:
def parse_datetime(a_datetime, account):
tz = pytz.timezone(account.timezone_name)
return parser.parse(a_datetime).astimezone(tz)
这仅适用于已经本地化的 datetime
对象(例如,UTC 作为时区)。
正如同一文档指出的那样,您最好在时区对象上使用 .localize()
方法:
def parse_datetime(a_datetime, account):
tz = pytz.timezone(account.timezone_name)
return tz.localize(parser.parse(a_datetime))
这适用于原始的 datetime
对象,并且对具有历史数据的时区也能做正确的事情。
如果您有混合数据,一些有时区,一些没有,那么您应该测试已经存在的时区:
def parse_datetime(a_datetime, account):
dt = parser.parse(a_datetime)
if dt.tzinfo is None:
tz = pytz.timezone(account.timezone_name)
dt = tz.localize(dt)
return dt
已经附加了时区的时间戳将生成可识别时区的 datetime
对象,并且不需要重新转换为另一个时区。
关于python - astimezone() 不能应用于原始日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773076/
给定一个变量,其中包含巴黎时区 2000-01-01 00:01 的日期时间(据我所知,冬季为 UTC+2): datetime.datetime(2000, 1, 1, 0, 1, tzinfo=p
timezones() 和日期时间是否可能在时间等方面与我的操作系统发生冲突? 起初这是一个愚蠢的问题,因为我遇到了这个问题,但我看不出它发生的原因或发生的位置。 看这个: def parse_dat
这是首先从 IST 中的字符串解析时间然后将其转换为 UTC 的代码。因此,当印度下午 4:00 时,格林威治标准时间/UTC 时间为上午 10:30。而以下代码将其打印为晚上 9:30。因此,不是减
我正在做一些时区转换,我得到了非常奇怪的结果。基本上在仅相差整小时的时区之间进行转换,我仍然得到非完整的结果。例如: from datetime import datetime from pytz i
在 2013 年 6 月 1 日,我希望“PST8PDT”时区的行为类似于 GMT+7,因为它是该时区的夏令时。但是,它的行为类似于 GMT+8: >>> import pytz, datetime
我有一个日期,我需要让它知道时区。 local_tz = timezone('Asia/Tokyo') start_date = '2012-09-27' start_date = datetime.
我正在使用 linux aws 机器,当我执行 datetime.datetime.now 时存在时区差异。所以我尝试了这种方法来克服时区错误 format = "%Y-%m-%d %H:%M:%S
请注意: C:\dev\poc\SDR>python Python 2.7.1 (r271:86832, Nov 27 2010, 17:19:03) [MSC v.1500 64 bit (AMD6
我是一名优秀的程序员,十分优秀!