python 系统时间strftime_Python datetime strptime()和strftime():如何保留时区信息...

这里的部分问题是通常用于表示时区的字符串实际上并不是唯一的。 “ EST”对北美的人仅表示“ America / New_York”。 这是C时间API的局限性,Python解决方案是...如果有人愿意编写PEP,则现在可以在任何将来的版本中添加完整的tz功能。

您可以格式化和解析时区作为偏移量,但是会丢失夏令时/夏令时信息(例如,夏天您无法将“ America / Phoenix”与“ America / Los_Angeles”区分开)。 您可以将时区的格式设置为3个字母的缩写,但是不能从中解析回。

如果您想要模糊,模棱两可但通常需要的东西,则需要像pytz这样的第三方库。

如果您想要真正明确的内容,只需自己将实际的tz名称附加到本地datetime字符串,然后在另一端将其拆分即可:

d = datetime.datetime.now(pytz.timezone("America/New_York"))

dtz_string = d.strftime(fmt) + ' ' + "America/New_York"

d_string, tz_string = dtz_string.rsplit(' ', 1)

d2 = datetime.datetime.strptime(d_string, fmt)

tz2 = pytz.timezone(tz_string)

print dtz_string

print d2.strftime(fmt) + ' ' + tz_string

或者……在这两者之间的中间位置,您已经在使用pytz库,该库可以解析(根据某些任意但定义明确的歧义消除规则)“ EST”等格式。 因此,如果您确实需要,可以将%Z留在格式化侧,然后将其拉下并用pytz.timezone()进行解析,然后将其余部分传递给strptime。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值