你可以做到这一点使用pytz
通过选择时区,然后再尝试操作字符串和datetime
的时间GMT功能的提取,那么你就可以在你的情况下,只选择GMT+x
时间,这是
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
输出:
[( '非洲/阿尔及尔', '(GMT + 0100)非洲/阿尔及尔'),( '非洲/班吉', '(GMT + 0100)非洲/班吉'),( 'Africa/Brazzaville','(GMT + 0100)非洲/杜阿拉','(GMT + 0100)非洲/杜阿拉',('非洲/休达','(GMT + 0100)非洲/休达'), 非洲/拉各斯',(GMT + 0100) 非洲/拉各斯'),('非洲/利伯维尔','(格林威治标准时间+0100)非洲/金沙萨'非洲/马拉博',(非洲/马拉博), '(GMT + 0100)非洲/马拉博'),('Africa/Ndjamena '('GMT + 0100) Africa/Ndjamena'),('Africa/Niamey','(GMT + 0100)Africa/Niamey'), ('Africa/Porto-Novo','(GMT + 0100) (非洲/突尼斯),(非洲/突尼斯), '(GMT + 0100)非洲/突尼斯'),(' Arctic/Longyearbyen','(GMT + 0100) Arctic/Longyearbyen'),('Eur (GMT + 0100) 欧洲/阿姆斯特丹'),('欧洲/安道尔','(GMT + 0100)欧洲/安道尔'), ('Europe/Belgrade','(GMT + 0100) )欧洲/贝尔格莱德'),('Europe/Berlin', '(GMT + 0100)Europe/Berlin'),('Europe/Bratislava','(GMT + 0100) Europe/Bratislava'), ('GMT + 0100) 欧洲/布鲁塞尔'),('欧洲/布达佩斯','(GMT + 0100)欧洲/布达佩斯'), ('Europe/Busingen','(GMT + 0100) ('欧洲/直布罗陀','(GMT + 0100)欧洲/直布罗陀'), ('欧洲/哥本哈根','(GMT + 0100)欧洲/哥本哈根'), ('GMT + 0100)欧洲/卢布尔雅那','(欧洲/欧洲/马耳他',('欧洲/马耳他', '(GMT + 0100)Europe/Malta'),('Europe/Monaco','(GMT + 0100) Europe/Monaco'),奥斯陆','(GMT + 0100)Europe/Oslo'), ('Europe/Paris','(GMT + 0100)Europe/Paris'),('Europe/Podgorica', '(GMT + 0100)Europe ('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 /欧洲/斯德哥尔摩','(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' ), ( '欧洲/萨格勒布', '(GMT + 0100)欧洲/萨格勒布'),( '欧洲/苏黎世', '(GMT + 0100)欧洲/苏黎世')]
UPDATE
挖掘出问题后。我发现了两个更好的解决方案。
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
使用parser
from dateutil.parser import parse
dt = parse("2014-11-02 21:00:00" + "GMT+0100")
dt.isoformat()
print dt
这个貌似正确的答案。出于好奇,为什么在解析中添加了字符串?只是为了更清楚一点吗?似乎没有它的工作。 – 2014-11-04 22:41:37