python中的十进制年份到datetime

时间:2014-01-03 19:10:40

标签: python datetime decimal

我一直在使用函数将datetime对象转换为基于此帖子的十进制年份 python how to convert datetime dates to decimal years 但我无法找到任何显示反向的帖子:十进制年份到datetime对象。在这方面的任何帮助表示赞赏。

感谢,

3 个答案:

答案 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 的推荐,适用于几天。