2024-06-07 00:47:49 发布
网友
我将时区信息保存为"PST -8 0"。我想把它转换成等价的时区名称,例如America/Los_Angeles。你知道吗
"PST -8 0"
America/Los_Angeles
是否有任何库或API在这个转换中有用?我正在为这个任务寻找BASH命令或pythonapi。你知道吗
我不确定这种转换是否可能首先和征求您的意见相同。你知道吗
查看pytz获取Olson timezone database的pythonapi。你知道吗
正如评论中提到的,“PST”部分可能不可靠。你知道吗
使用pytz,你可以在某种程度上解决这个问题。如果我们假设您要解析输入的数字部分,并忽略其前面的任何字符串,则它可能如下所示:
import pytz import re from datetime import datetime def find_timezone_name(input): match = re.match(r'.*([+-]\d+) (\d+)', input) if match: offset = int(match.group(1))+int(match.group(2))/10.0 else: raise ValueError('Unexpected input format') refdate = datetime.now() for tzname in pytz.common_timezones: tzinfo = pytz.timezone(tzname) tzoffset = tzinfo.utcoffset(refdate) if offset == tzoffset.total_seconds()/3600: return tzname return "Unknown" print(find_timezone_name('PST -8 0'))
如果你想把时区限制在一个特定的列表中,你可以用其他的东西替换pytz.common_timezones,或者如果你有额外的输入数据来帮助你的选择过程,你可以应用其他类型的逻辑。你知道吗
pytz.common_timezones
当然,您可以调整regex以适应额外的输入变量。你知道吗
最后,请务必考虑马特·约翰逊在回答同一问题时提到的要点。你知道吗
虽然在某些特定情况下,您可以按自己的要求行事,但在常规情况下,您不能这样做,原因如下:
时区缩写可能模棱两可。例如,"CST"有5种不同的含义。见Wikipedia's list of time zone abbreviations。
"CST"
时区缩写并不统一和一致。维基百科的列表可能与其他地方的缩写列表有所不同。在世界上的一些地方,没有缩写在使用,其他地方争论什么是正确的缩写。
时区偏移并不完全代表时区。太平洋时间不是零下八点。冬天是-8,夏天是-7。它在夏令时改变。
tzdb中的许多不同时区标识符在某个时间点共享相同的偏移量,有时甚至共享相同的缩写。对于您给出的示例,结果很容易是America/Vancouver,而不是America/Los_Angeles。在某些情况下,可以匹配的不同区域在不同的时间点会有很大的不同。请参阅the list of tzdb zones on Wikipedia,其中包括它们的偏移量。
America/Vancouver
查看pytz获取Olson timezone database的pythonapi。你知道吗
正如评论中提到的,“PST”部分可能不可靠。你知道吗
使用pytz,你可以在某种程度上解决这个问题。如果我们假设您要解析输入的数字部分,并忽略其前面的任何字符串,则它可能如下所示:
如果你想把时区限制在一个特定的列表中,你可以用其他的东西替换
pytz.common_timezones
,或者如果你有额外的输入数据来帮助你的选择过程,你可以应用其他类型的逻辑。你知道吗当然,您可以调整regex以适应额外的输入变量。你知道吗
最后,请务必考虑马特·约翰逊在回答同一问题时提到的要点。你知道吗
虽然在某些特定情况下,您可以按自己的要求行事,但在常规情况下,您不能这样做,原因如下:
时区缩写可能模棱两可。例如,
"CST"
有5种不同的含义。见Wikipedia's list of time zone abbreviations。时区缩写并不统一和一致。维基百科的列表可能与其他地方的缩写列表有所不同。在世界上的一些地方,没有缩写在使用,其他地方争论什么是正确的缩写。
时区偏移并不完全代表时区。太平洋时间不是零下八点。冬天是-8,夏天是-7。它在夏令时改变。
tzdb中的许多不同时区标识符在某个时间点共享相同的偏移量,有时甚至共享相同的缩写。对于您给出的示例,结果很容易是
America/Vancouver
,而不是America/Los_Angeles
。在某些情况下,可以匹配的不同区域在不同的时间点会有很大的不同。请参阅the list of tzdb zones on Wikipedia,其中包括它们的偏移量。相关问题 更多 >
编程相关推荐