如何从UTC的偏移量(毫秒)构造日期时间tzinfo对象



我想构建一个Python应用程序,它将从Android手机接收时区信息,我想将其转换为datetime tzinfo对象(例如,由pytz实现)。

这个Java小程序显示了TimeZone可用格式的"示例":

import java.util.TimeZone;
public class GetLocalTimeZone {
public static void main(String []args) {
TimeZone local_tz = TimeZone.getDefault();
System.out.println(local_tz.getDisplayName());
System.out.println(local_tz.getID());
System.out.println(local_tz.getRawOffset());
}
}

它打印

Central European Time
Europe/Amsterdam
3600000

根据时区文档,getRawOffset()函数返回"添加到UTC以获得该时区的标准时间的时间量(以毫秒为单位)"。这似乎是实例化datetime.tzinfo对象的一个很好的起点。

问题是,尽管我可以使用getID()方法的输出实例化一个,例如

import pytz
amsterdam = pytz.timezone('Europe/Amsterdam')

我不知道如何实例化具有数字偏移量的timezone,即使我将其转换为小时。例如,

pytz.timezone('+01:00')

得到CCD_ 6。如何从UTC的偏移量(以毫秒为单位)创建datetime.tzinfo对象?(我也对其他实现持开放态度,例如Arrow和Pendulum)。

您的问题是时区同时包含偏移量和夏令时信息。

可能存在偏移量相同但夏令时不同的时区,因此仅偏移量不足以识别时区。

如果可能,您应该使用显示名称和/或ID。

如果你做不到这一点,你最好的办法是列举所有时区,并根据一年中至少有一部分时间有时差的时区来获得入围名单。那你就得选一个了。

相关内容

  • 没有找到相关文章

最新更新