我有一个年份值和一年中的某一天,并想转换为日期(日/月/年)。
问问题
43758 次
6 回答
104
datetime.datetime(year, 1, 1) + datetime.timedelta(days - 1)
于 2010-03-11T18:26:01.633 回答
32
>>> import datetime
>>> datetime.datetime.strptime('2010 120', '%Y %j')
datetime.datetime(2010, 4, 30, 0, 0)
>>> _.strftime('%d/%m/%Y')
'30/04/2010'
于 2010-03-11T18:25:30.653 回答
7
可以使用类的toordinal()
和fromordinal()
函数:date
from datetime import date
date.fromordinal(date(year, 1, 1).toordinal() + days - 1)
于 2010-03-11T18:29:14.800 回答
4
因为现在很常见,所以一个pandas
选项,使用pd.to_datetime
指定的单位和原点:
import pandas as pd
day, year = 21, 2021
print(pd.to_datetime(day-1, unit='D', origin=str(year)))
# 2021-01-21 00:00:00
于 2021-01-13T16:57:25.427 回答
0
使用 mx.DateTime 模块获取日期类似于上面使用datetime
and提出的建议timedelta
。即:
import mx.DateTime as dt
date = dt.DateTime(yyyy,mm,dd) + dt.DateTimeDeltaFromDays(doy-1)
因此,假设您知道年份(例如 2020 年)和 doy(一年中的某一天,例如 234),那么:
date = dt.DateTime(2020,1,1) + dt.DateTimeFromDays(233)
返回
2020-08-21 00:00:00.00
mx.DateTime 库的优点是具有许多有用的功能。根据其主页中的描述:
- 以几乎无缝的方式解析日期/时间字符串值。
- 提供与许多不同的替代日期/时间存储格式之间的转换例程。
- 包括一个易于使用的 C API,使集成变得轻而易举。
- 快速、高效、准确。
- 格鲁吉亚和儒略历支持。
- 范围广泛的有效日期(包括 BC 日期)。
- 稳定、健壮和便携(mxDateTime 已经存在将近 15 年了)。
- 与 Python 的时间和日期时间模块完全互操作。
于 2020-11-17T18:14:05.170 回答
0
>>>import datetime
>>>year = int(input())
>>>month = int(input())
>>>day = int(input())
data = datetime.datetime(year,month,day)
daynew = data.toordinal()
yearstart = datetime.datetime(year,1,1)
day_yearstart = yearstart.toordinal()
print ((daynew-day_yearstart)+1)
于 2018-06-01T11:14:44.880 回答