gpt4 book ai didi

python - 如何将 Python 日期时间日期转换为十进制/浮点年

转载 作者:太空狗 更新时间:2023-10-29 19:31:59 24 4
gpt4 key购买 nike

我正在寻找一种方法将日期时间对象转换为十进制(/ float )年份,包括小数部分。示例:

>>> obj = SomeObjet()
>>> obj.DATE_OBS
datetime.datetime(2007, 4, 14, 11, 42, 50)

如何将 datetime.datetime(2007, 4, 14, 11, 42, 50) 转换为十进制年份。我所说的十进制格式是指浮点值 2007.4523,其中小数部分是从年初(2007-01-01 到 2007-04-14)开始的秒数除以总数那一年的秒数(2007-01-01 到 2008-01-01)。

(注意:在统计建模中(例如线性回归),这称为“时间索引”)

最佳答案

from datetime import datetime as dt
import time

def toYearFraction(date):
def sinceEpoch(date): # returns seconds since epoch
return time.mktime(date.timetuple())
s = sinceEpoch

year = date.year
startOfThisYear = dt(year=year, month=1, day=1)
startOfNextYear = dt(year=year+1, month=1, day=1)

yearElapsed = s(date) - s(startOfThisYear)
yearDuration = s(startOfNextYear) - s(startOfThisYear)
fraction = yearElapsed/yearDuration

return date.year + fraction

演示:

>>> toYearFraction(dt.today())
2011.47447514

此方法可能精确到秒(如果夏令时或其他奇怪的区域性事物生效,则精确到小时)。它在闰年期间也能正常工作。如果您需要剧烈的分辨率(例如由于地球自转的变化),您最好查询网络服务。

关于python - 如何将 Python 日期时间日期转换为十进制/浮点年,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6451655/

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