datetime.datetime.utcnow()为什么没有tzinfo? [英] datetime.datetime.utcnow() why no tzinfo?

查看:598
本文介绍了datetime.datetime.utcnow()为什么没有tzinfo?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

datetime.datetime.utcnow()
datetime.datetime(2010, 2, 25, 4, 14, 37, 366086)

为什么这个datetime没有任何tz信息说它的utc日期。

Why does this datetime not have any tz info say its a utc date.

推荐答案

这意味着它是时区天真的,所以你不能用 datetime.astimezone

That means it is timezone naive, so you can't use it with datetime.astimezone

你可以给它一个这样的时区

you can give it a timezone like this

import pytz  # 3rd party: $ pip install pytz

u = datetime.utcnow()
u = u.replace(tzinfo=pytz.utc) #NOTE: it works only with a fixed utc offset

现在您可以更改时区

print(u.astimezone(pytz.timezone("America/New_York")))

要获取当前时间给定时区,您可以直接将tzinfo传递到 datetime.now()

To get the current time in a given timezone, you could pass tzinfo to datetime.now() directly:

#!/usr/bin/env python
from datetime import datetime
import pytz # $ pip install pytz

print(datetime.now(pytz.timezone("America/New_York")))

它适用于任何时区包括观察夏令时(DST)的时区,即它适用于在不同时间(非固定的utc offset)可能具有不同的utc偏移的时区。不要使用 tz.localize(datetime.now()) - 当本地时间不明确时,在DST转换结束时可能会失败。

It works for any timezone including those that observe daylight saving time (DST) i.e., it works for timezones that may have different utc offsets at different times (non-fixed utc offset). Don't use tz.localize(datetime.now()) -- it may fail during end-of-DST transition when the local time is ambiguous.

这篇关于datetime.datetime.utcnow()为什么没有tzinfo?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆