用Python将年/月/日转换为一年中的一天

2024-05-13 08:58:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Pythondatetime模块,即:

>>> import datetime
>>> today = datetime.datetime.now()
>>> print today
2009-03-06 13:24:58.857946

我想计算闰年的敏感日。e、 g.今天(2009年3月6日)是2009年的第65天。Here's web-based DateTime calculator

总之,我看到了两个选择:

A.在月数组中创建一个天数(31,28,…),决定是否是闰年,手动总结天数。

B.使用datetime.timedelta进行猜测,然后对一年中的正确日期进行二进制搜索:

>>> import datetime
>>> YEAR = 2009
>>> DAY_OF_YEAR = 62
>>> d = datetime.date(YEAR, 1, 1) + datetime.timedelta(DAY_OF_YEAR - 1)

这两种感觉都相当笨拙&我有一种直觉,认为有一种更“Python”的方式来计算一年中的一天。有什么想法/建议吗?


Tags: 模块ofimportwebtodaydatetimehereyear
3条回答

你不能用^{}吗?

>>> import datetime
>>> today = datetime.datetime.now()
>>> print today
2009-03-06 15:37:02.484000
>>> today.strftime('%j')
'065'

编辑

如注释中所述,如果希望对该数字进行比较或计算,则必须将其转换为int(),因为strftime()返回一个字符串。如果是这样,那么最好使用DzinX's答案。

DZinX's answer是这个问题的一个很好的答案。我在寻找反函数时发现了这个问题。我发现这个有用:

import datetime
datetime.datetime.strptime('1936-077T13:14:15','%Y-%jT%H:%M:%S')

>>>> datetime.datetime(1936, 3, 17, 13, 14, 15)

datetime.datetime.strptime('1936-077T13:14:15','%Y-%jT%H:%M:%S').timetuple().tm_yday

>>>> 77

我不太懂这里的礼节,但我认为指向反函数的指针可能对像我这样的人有用。

有一个非常简单的解决方案:

from datetime import datetime
day_of_year = datetime.now().timetuple().tm_yday

相关问题 更多 >