这些时间来自澳大利亚的昆士兰州,那里没有夏令时。
我有一个使用this strategy进行时间插值的程序,但是它相对于夏时制进行插值。
例如,此脚本在两个时间点之间进行插值,总计间隔为100。
import numpy as np
from datetime import datetime
import datetime as dt
import time
x_dec = np.linspace(0, np.pi, num=100)
time1 = dt.datetime(2017, 11, 4, 20, 47, 0)
time2 = dt.datetime(2017, 11, 5, 3, 1, 0)
this_time = time.mktime(time1.timetuple())
next_time = time.mktime(time2.timetuple())
this_x_temp = np.interp(x_dec, (x_dec.min(), x_dec.max()), (this_time, next_time))
this_x = np.vectorize(datetime.fromtimestamp)(this_x_temp)
print(this_x)
与美国夏令时一致,它不是完全生成插补时间,而是在凌晨1点左右循环两次。参见示例输出。
...
datetime.datetime(2017, 11, 5, 1, 49, 29, 90909)
datetime.datetime(2017, 11, 5, 1, 53, 52, 121212)
datetime.datetime(2017, 11, 5, 1, 58, 15, 151515)
datetime.datetime(2017, 11, 5, 1, 2, 38, 181818)
datetime.datetime(2017, 11, 5, 1, 7, 1, 212121)
datetime.datetime(2017, 11, 5, 1, 11, 24, 242424)
datetime.datetime(2017, 11, 5, 1, 15, 47, 272727)
...
鉴于我的所有观测值在一整天都是随机的时间,并且在观测值之间需要大约100个数据点的插值,因此我认为我不能为该应用程序使用时间序列。如何使np.interp
忽略美国的夏令时,而只是将时间插值,就好像没有夏令时切换一样?
答案 0 :(得分:1)
您看到的是US daylight savings time的加入。在2017年11月5日凌晨2点,实际上又变成了凌晨1点。
如果您不想处理美国DST,建议您使用pytz
明确设置您的时区。由于datetime
会从中绘制计算机的位置和DST数据,这也可能有助于检查计算机设置为哪个时区。您可以使用
os.environ['TZ'] = 'Australia/Brisbane'
我想。不想在我的系统上玩太多