我一直在使用函数将datetime对象转换为基于此帖子的十进制年份 python how to convert datetime dates to decimal years 但我无法找到任何显示反向的帖子:十进制年份到datetime对象。在这方面的任何帮助表示赞赏。
感谢,
答案 0 :(得分:5)
未经过适当测试,但看起来不错:
from datetime import datetime, timedelta
start = 2012.5
year = int(start)
rem = start - year
base = datetime(year, 1, 1)
result = base + timedelta(seconds=(base.replace(year=base.year + 1) - base).total_seconds() * rem)
# 2012-07-02 00:00:00
答案 1 :(得分:0)
我将做的是以下内容:
将十进制年份拆分为整数和小数部分。
为年份的1月1日创建一个datetime对象=十进制年份的整数。
将小数部分转换为秒。
将timedelta(seconds = ...)添加到datetime对象。
答案 2 :(得分:0)
我发现定义“基础”并向下计算到第二级是不必要的,因为似乎仅通过使用天数就可以保持相同的准确性。我相信这个回复不那么冗长。
datetime(int(x), 1, 1) + timedelta(days = (x % 1) * 365)
上面的 365 可以很容易地替换为 @PaulMcGuire 的推荐,适用于几天。