I have a year value and a day of year and would like to convert to a date (day/month/year).
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
datetime.datetime(year, 1, 1) + datetime.timedelta(days - 1)
Method 2
>>> import datetime
>>> datetime.datetime.strptime('2010 120', '%Y %j')
datetime.datetime(2010, 4, 30, 0, 0)
>>> _.strftime('%d/%m/%Y')
'30/04/2010'
Method 3
The toordinal() and fromordinal() functions of the date class could be used:
from datetime import date date.fromordinal(date(year, 1, 1).toordinal() + days - 1)
Method 4
since it is pretty common these days, a pandas option, using pd.to_datetime with specified unit and origin:
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
Method 5
>>>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)
Method 6
Using the mx.DateTime module to get the date is similar to what has been proposed above using datetime and timedelta. Namely:
import mx.DateTime as dt date = dt.DateTime(yyyy,mm,dd) + dt.DateTimeDeltaFromDays(doy-1)
So, given that you know the year (say, 2020) and the doy (day of the year, say 234), then:
date = dt.DateTime(2020,1,1) + dt.DateTimeFromDays(233)
which returns
2020-08-21 00:00:00.00
The advantage of the mx.DateTime library is that has many useful features. As per description in its homepage:
- Parses date/time string values in an almost seamless way.
- Provides conversion routines to and from many different alternative date/time
storage formats. - Includes an easy-to-use C API which makes
integration a breeze. - Fast, memory efficient, accurate.
- Georgian and Julian calendar support.
- Vast range of valid dates (including B.C. dates).
- Stable, robust and portable (mxDateTime has been around for almost 15 years
now). - Fully interoperates with Python’s time and datetime modules.
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0