gpt4 book ai didi

python-3.x - 将日期时间四舍五入到最接近的小时

转载 作者:行者123 更新时间:2023-12-02 06:49:36 24 4
gpt4 key购买 nike

我有一个与 this one 非常相似的问题和 this one但我被困在一些舍入问题上。

我有一个来自 netCDF 文件的时间序列,我正在尝试将它们转换为日期时间格式。时间序列的格式为“自 1990-01-01 00:00:00 以来的天数”。最终我想要格式 .strftime('%Y%m%d.%H%M') 的输出.例如,我按如下方式读取我的 netCDF 文件

import netCDF4
nc = netCDF4.Dataset(file_name)
time = np.array(nc['time'][:])

然后我有
In [180]: time[0]
Out[180]: 365
In [181]: time[1]
Out[181]: 365.04166666651145

然后我做了
In [182]: start = datetime.datetime(1990,1,1)
In [183]: delta = datetime.timedelta(time[1])
In [184]: new_time = start + delta
In [185]: print(new_time.strftime('%Y%m%d.%H%M'))
19910101.0059

有没有办法“四舍五入”到最近的小时,所以我得到 19910101.0100 ?

最佳答案

您可以使用 datetime.replace() 向下舍入,并通过使用 datetime.timedelta(hours=1) 在向下舍入的值上增加一个小时来向上舍入.

import datetime

def round_to_hour(dt):
dt_start_of_hour = dt.replace(minute=0, second=0, microsecond=0)
dt_half_hour = dt.replace(minute=30, second=0, microsecond=0)

if dt >= dt_half_hour:
# round up
dt = dt_start_of_hour + datetime.timedelta(hours=1)
else:
# round down
dt = dt_start_of_hour

return dt

请注意,由于我们使用的是 replace我们没有替换的值(如时区 - tzinfo)将被保留。

关于python-3.x - 将日期时间四舍五入到最接近的小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48107644/

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