Python pytz 时区与 UTC 时间相同
Python pytz timezone gives just same as UTC time
在 Linux,我正在尝试使用 pytz 获取时区转换时间。但是,下面的代码没有 return 正确 'Asial/Seoul' 时间。
from datetime import datetime
from pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())
这就是我在 Linux 中测试的方式。 datetime.now() returns UTC 时间。而且,'Asia/Seoul' 的 pytz 时区也 returns 相同的 UTC 时间。
我正在寻找如何使用 pytz 获取正确时区时间的答案。
您正在本地化一个天真的 datetime
。这意味着您有一个没有时区信息的 datetime
;在其上使用 localize
意味着您要在以前 none 的位置附加时区信息。比较:
>>> datetime.now()
datetime.datetime(2017, 4, 20, 14, 0, 0, 0)
>>> seoul.localize(datetime.now())
datetime.datetime(2017, 4, 20, 14, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)
时间相同,一次有时区信息,一次没有时区信息。
如果您想获得首尔当前时间,您需要使用该时区创建datetime
:
>>> datetime.now(tz=seoul)
datetime.datetime(2017, 4, 20, 21, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)
或者,您采用已经有时区的时间戳,并将其转换:
>>> datetime.now(tz=timezone.utc).astimezone(seoul)
datetime.datetime(2017, 4, 20, 21, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)
您不能从天真的时间戳(没有时区)进行时区转换,因为它本身没有任何意义。
from datetime import datetime
import pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())
没错。
在你的 linux 上,你能告诉我 date -R
的输出吗?我假设你机器的 tz 是 utc.
在 Linux,我正在尝试使用 pytz 获取时区转换时间。但是,下面的代码没有 return 正确 'Asial/Seoul' 时间。
from datetime import datetime
from pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())
这就是我在 Linux 中测试的方式。 datetime.now() returns UTC 时间。而且,'Asia/Seoul' 的 pytz 时区也 returns 相同的 UTC 时间。
我正在寻找如何使用 pytz 获取正确时区时间的答案。
您正在本地化一个天真的 datetime
。这意味着您有一个没有时区信息的 datetime
;在其上使用 localize
意味着您要在以前 none 的位置附加时区信息。比较:
>>> datetime.now()
datetime.datetime(2017, 4, 20, 14, 0, 0, 0)
>>> seoul.localize(datetime.now())
datetime.datetime(2017, 4, 20, 14, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)
时间相同,一次有时区信息,一次没有时区信息。
如果您想获得首尔当前时间,您需要使用该时区创建datetime
:
>>> datetime.now(tz=seoul)
datetime.datetime(2017, 4, 20, 21, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)
或者,您采用已经有时区的时间戳,并将其转换:
>>> datetime.now(tz=timezone.utc).astimezone(seoul)
datetime.datetime(2017, 4, 20, 21, 0, 0, 0, tzinfo=<DstTzInfo 'Asia/Seoul' KST+9:00:00 STD>)
您不能从天真的时间戳(没有时区)进行时区转换,因为它本身没有任何意义。
from datetime import datetime
import pytz
seoul = pytz.timezone('Asia/Seoul')
curtime = seoul.localize(datetime.now())
没错。
在你的 linux 上,你能告诉我 date -R
的输出吗?我假设你机器的 tz 是 utc.