gpt4 book ai didi

python - 更改时间戳的 utcoffset

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

我知道有时当您在时区之间转换时,Python 会对结果应该是什么感到困惑,因为时区很难。

from pandas import Timestamp

string = "1900-01-01 00:00:00"
ts = Timestamp(string, tz='US/Eastern')
print(ts)

Timestamp('1900-01-01 00:00:00-0456', tz='US/Eastern')

显然偏移量不应为 4 小时 56 分钟。

当它出错时,有没有办法坚持你的 utcoffset 应该是什么?

我只是在“美国/东部”和“UTC”之间进行转换,所以时差应该永远只有四五个小时。我想做的是检查偏移量是否为整数小时数,如果不是,则四舍五入到最接近的数字。

最佳答案

在 1901-12-13 20:45:52 之前,utcoffset 为 4 小时 56 分钟。

您可以使用使用 Olson database 的 pytz 来确认这一点.这是 Pandas 用于执行时区计算的同一模块:

import pytz
eastern = pytz.timezone('US/Eastern')
for utcdate, info in zip(
eastern._utc_transition_times, eastern._transition_info):
utcoffset, dstoffset, tzabbrev = info
print('{} | {} '.format(utcdate, utcoffset.total_seconds()))

这将打印美国/东部时区的所有 utc 转换边界和 utcoffets(以秒为单位)。前几行看起来像这样

0001-01-01 00:00:00 | -17760.0 
1901-12-13 20:45:52 | -18000.0
1918-03-31 07:00:00 | -14400.0
1918-10-27 06:00:00 | -18000.0
1919-03-30 07:00:00 | -14400.0
...

因此,在 1901-12-13 20:45:52 之前,utcoffset 为 -17760 秒(或等同于 4 小时 56 分钟)。


standard way使用 pytz 从本地时间创建时区感知日期是调用 localize 方法:

import datetime as DT
import pytz
eastern = pytz.timezone('US/Eastern')
date = DT.datetime(1900,1,1)
local_date = eastern.localize(date)
print(local_date)

打印

1900-01-01 00:00:00-04:56

这确认 Pandas 返回的时间戳是正确的:

import pandas as pd
string = "1900-01-01 00:00:00"
ts = pd.Timestamp(string, tz='US/Eastern')
print(ts)
# 1900-01-01 00:00:00-04:56

关于python - 更改时间戳的 utcoffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41304394/

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