gpt4 book ai didi

python - 在 pytz 中创建新时区

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:46 25 4
gpt4 key购买 nike

我正在尝试为“GMT+01”创建一个时区对象,但是,我无法找到使用 pytz 来做到这一点的方法。我尝试使用( http://wwp.greenwichmeantime.com/time-zone/gmt-plus-1/ )表示位于该时区的城市,但它们都给出了看似奇怪且不一致的结果(它们与 LMT 相关)

>>> timezone('Africa/Algiers')
<DstTzInfo 'Africa/Algiers' PMT+0:09:00 STD>
>>> timezone('Africa/Brazzaville')
<DstTzInfo 'Africa/Brazzaville' LMT+1:01:00 STD>
>>> timezone('Africa/Conakry')
<DstTzInfo 'Africa/Conakry' LMT-1 day, 23:05:00 STD>
>>> timezone('Africa/Douala')
<DstTzInfo 'Africa/Douala' LMT+0:39:00 STD>

有谁知道一种方法来创建一个带有“GMT+01”的自定义时区,或者甚至创建一个相对于时区(“GMT”)的时区。我尝试添加 datetime.timedelta,但这(不出所料)不起作用。

最佳答案

您可以使用pytz通过选择时区来做到这一点,然后尝试操作字符串并从datetime中提取GMT函数中的时间,然后您可以仅选择时间GMT+x 在您的情况下,它是 GMT+1

import pytz

from datetime import tzinfo, timedelta, datetime

GMT_1_Time_Zone = []
for tz in pytz.common_timezones:
now = datetime.now(pytz.timezone(tz))
print now
if "+0100" in now.strftime("%z"):
GMT_1_Time_Zone.append((tz, "(GMT%s) %s" % (now.strftime("%z"), tz)))


print GMT_1_Time_Zone

输出:

[('Africa/Algiers', '(GMT+0100) Africa/Algiers'), ('Africa/Bangui', '(GMT+0100) Africa/Bangui'), ('Africa/Brazzaville', '(GMT+0100) Africa/Brazzaville'), ('Africa/Ceuta', '(GMT+0100) Africa/Ceuta'), ('Africa/Douala', '(GMT+0100) Africa/Douala'), ('Africa/Kinshasa', '(GMT+0100) Africa/Kinshasa'), ('Africa/Lagos', '(GMT+0100) Africa/Lagos'), ('Africa/Libreville', '(GMT+0100) Africa/Libreville'), ('Africa/Luanda', '(GMT+0100) Africa/Luanda'), ('Africa/Malabo', '(GMT+0100) Africa/Malabo'), ('Africa/Ndjamena', '(GMT+0100) Africa/Ndjamena'), ('Africa/Niamey', '(GMT+0100) Africa/Niamey'), ('Africa/Porto-Novo', '(GMT+0100) Africa/Porto-Novo'), ('Africa/Tripoli', '(GMT+0100) Africa/Tripoli'), ('Africa/Tunis', '(GMT+0100) Africa/Tunis'), ('Arctic/Longyearbyen', '(GMT+0100) Arctic/Longyearbyen'), ('Europe/Amsterdam', '(GMT+0100) Europe/Amsterdam'), ('Europe/Andorra', '(GMT+0100) Europe/Andorra'), ('Europe/Belgrade', '(GMT+0100) Europe/Belgrade'), ('Europe/Berlin', '(GMT+0100) Europe/Berlin'), ('Europe/Bratislava', '(GMT+0100) Europe/Bratislava'), ('Europe/Brussels', '(GMT+0100) Europe/Brussels'), ('Europe/Budapest', '(GMT+0100) Europe/Budapest'), ('Europe/Busingen', '(GMT+0100) Europe/Busingen'), ('Europe/Copenhagen', '(GMT+0100) Europe/Copenhagen'), ('Europe/Gibraltar', '(GMT+0100) Europe/Gibraltar'), ('Europe/Ljubljana', '(GMT+0100) Europe/Ljubljana'), ('Europe/Luxembourg', '(GMT+0100) Europe/Luxembourg'), ('Europe/Madrid', '(GMT+0100) Europe/Madrid'), ('Europe/Malta', '(GMT+0100) Europe/Malta'), ('Europe/Monaco', '(GMT+0100) Europe/Monaco'), ('Europe/Oslo', '(GMT+0100) Europe/Oslo'), ('Europe/Paris', '(GMT+0100) Europe/Paris'), ('Europe/Podgorica', '(GMT+0100) Europe/Podgorica'), ('Europe/Prague', '(GMT+0100) Europe/Prague'), ('Europe/Rome', '(GMT+0100) Europe/Rome'), ('Europe/San_Marino', '(GMT+0100) Europe/San_Marino'), ('Europe/Sarajevo', '(GMT+0100) Europe/Sarajevo'), ('Europe/Skopje', '(GMT+0100) Europe/Skopje'), ('Europe/Stockholm', '(GMT+0100) Europe/Stockholm'), ('Europe/Tirane', '(GMT+0100) Europe/Tirane'), ('Europe/Vaduz', '(GMT+0100) Europe/Vaduz'), ('Europe/Vatican', '(GMT+0100) Europe/Vatican'), ('Europe/Vienna', '(GMT+0100) Europe/Vienna'), ('Europe/Warsaw', '(GMT+0100) Europe/Warsaw'), ('Europe/Zagreb', '(GMT+0100) Europe/Zagreb'), ('Europe/Zurich', '(GMT+0100) Europe/Zurich')]

更新

深入研究问题后。我找到了两个更好的解决方案来做到这一点。

from dateutil import tz
import datetime
import pytz

from datetime import datetime
dt = datetime.strptime("2014-11-02 21:00:00", "%Y-%m-%d %H:%M:%S")
dt = pytz.timezone('Etc/GMT+1').localize(dt)
dt.isoformat()
print dt

使用解析器

from dateutil.parser import parse
dt = parse("2014-11-02 21:00:00" + "GMT+0100")
dt.isoformat()
print dt

关于python - 在 pytz 中创建新时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26742896/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com