【发布时间】:2011-01-26 12:28:58
【问题描述】:
我有一个年份值和一年中的某一天,并想转换为日期(日/月/年)。
【问题讨论】:
标签: python date julian-date
我有一个年份值和一年中的某一天,并想转换为日期(日/月/年)。
【问题讨论】:
标签: python date julian-date
datetime.datetime(year, 1, 1) + datetime.timedelta(days - 1)
【讨论】:
>>> import datetime
>>> datetime.datetime.strptime('2010 120', '%Y %j')
datetime.datetime(2010, 4, 30, 0, 0)
>>> _.strftime('%d/%m/%Y')
'30/04/2010'
【讨论】:
可以使用date 类的toordinal() 和fromordinal() 函数:
from datetime import date
date.fromordinal(date(year, 1, 1).toordinal() + days - 1)
【讨论】:
因为现在很常见,所以 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
【讨论】:
>>>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)
【讨论】:
使用 mx.DateTime 模块获取日期类似于上面使用datetime 和timedelta 提出的建议。即:
import mx.DateTime as dt
date = dt.DateTime(yyyy,mm,dd) + dt.DateTimeDeltaFromDays(doy-1)
因此,假设您知道年份(例如 2020 年)和日期(一年中的某天,例如 234),那么:
date = dt.DateTime(2020,1,1) + dt.DateTimeFromDays(233)
返回
2020-08-21 00:00:00.00
mx.DateTime 库的优势在于它具有许多有用的功能。根据其homepage中的描述:
【讨论】:
mx 模块是什么?这对使用 datetime 和 timedelta 的简单解决方案有什么好处?