当前位置: 首页 > 面试题库 >

在python中转换时区的意外结果

姚才捷
2023-03-14
问题内容

我试图了解为什么将时区转换为UTC时会得到这些结果:

In [74]: d1 = datetime(2007, 12, 5, 6, 30,tzinfo=pytz.timezone('US/Pacific'))
In [75]: d1
Out[75]: datetime.datetime(2007, 12, 5, 6, 30, tzinfo=<DstTzInfo 'US/Pacific' LMT-1 day, **16:07:00 STD**>)
In [76]: d1.astimezone(pytz.utc)
Out[76]: datetime.datetime(2007, 12, 5, 14, 23, tzinfo=<UTC>)

为什么早上6:30变成下午2:23?

另一方面,如果使用以下方法,则会得到预期的结果:

In [90]: d2 = datetime(2007, 12, 5, 6, 30)
In [91]: uspac = pytz.timezone('US/Pacific')
In [92]: d2_aware = uspac.localize(d2)
In [94]: d2_aware.astimezone(pytz.utc)
Out[94]: datetime.datetime(2007, 12, 5, 14, 30, tzinfo=<UTC>)

问题答案:

从部分文档中:http : //pytz.sourceforge.net/#localized-times-and-date-
arithmetic

不幸的是,在许多时区中,使用标准datetime构造函数的tzinfo参数对pytz都不起作用。[…]对于没有夏令时转换的时区,例如UTC,这是安全的。[…]处理时间的首选方法是始终在UTC中工作,仅在生成要由人类读取的输出时才转换为本地时间。



 类似资料:
  • 问题内容: 给定一个变量,该变量包含巴黎时区的日期时间2000-01-01 00:01(冬季afaik中为UTC + 2): 我希望转换为UTC会导致日期时间为1999-12-31 22:01,但是却得到了: 我想念什么? 谢谢 问题答案: 不幸的是 ,在许多时区使用标准构造函数的参数“不起作用” 。 但是对于没有夏令时转换的时区来说是安全的,例如UTC: 您会注意到: “ LMT + 0:09:

  • 问题内容: 我正在使用arange函数来定义for循环迭代并获得意外结果。 满足以下条件: 仍使用8.35的停止值,如下所示 产生以下 但是我希望我的射程结束于8.35!我知道我可以使用> 8.35和<8.4的止损值来获得我的结果,但是为什么它与众不同并且在我看来不一致? 编辑:我正在使用2.7版 问题答案: 也许这与浮点数的限制有关。由于机器的精度,不可能将所有可能的值完美地存储为浮点数。例如:

  • 问题内容: 谁能建议一种简单的方法来将日期和时间转换为php中的不同时区? 问题答案: 您可以为此使用datetime对象或其函数别名: 编辑评论 但我无法使用此方法,因为当用户从不同位置登录时,我需要在不同时区显示日期 那不是问题。用户登录后,您将确定其时区并将其设置为DateTime对象,如图所示。我在我的一个项目中使用了类似的方法,它的工作原理很吸引人。 在数据库中,我需要获取任何单个时区中

  • 问题内容: 我试图将浮点数转换为php中的int值: 我可以使用ceil使其工作,但是有人可以向我解释吗? 问题答案: 这是因为以10为底的有限表示形式的数字在PHP使用的浮点表示形式中可能具有也可能没有确切的表示形式。 看到 由于总是将数字四舍五入,因此制图表达中的一个小错误使它可以将其四舍五入为一个原本希望的数字。 考虑改为使用。

  • 从中提取代码的类确实需要隐式转换和。那么,有没有一种方法可以在不明确转换的情况下防止这种行为呢?

  • > 如何将IST转换为UTC,即(至2014年5月14日18:30:00) 我的代码是 > 如果用户从任何区域输入相同的日期,则将获得UTC时间(例如:从澳大利亚输入,然后是2014年5月15日00:00:00至2014年5月14日16:00:00) 请提出任何建议。