# Python – Convert day number to date in particular year

Given day number, convert to date it refers to.

Input : day_num = “339”, year = “2020”
Output : 12-04-2020
Explanation : 339th Day of 2020 is 4th December.

Input : day_num = “4”, year = “2020”
Output : 01-04-2020
Explanation : 4th Day of 2020 is 4th January.

Method #1 : Using datetime.strptime()

In this, we get the year string and day number string, and pass to strptime(), converts to the corresponding required date.

## Python3

 `# Python3 code to demonstrate working of` `# Convert day number to date in particular year` `# Using datetime.strptime()` `from` `datetime ``import` `datetime`   `# initializing day number` `day_num ``=` `"339"`   `# print day number` `print``(``"The day number : "` `+` `str``(day_num))`   `# adjusting day num` `day_num.rjust(``3` `+` `len``(day_num), ``'0'``)`   `# Initialize year` `year ``=` `"2020"`   `# converting to date` `res ``=` `datetime.strptime(year ``+` `"-"` `+` `day_num, ``"%Y-%j"``).strftime(``"%m-%d-%Y"``)`   `# printing result` `print``(``"Resolved date : "` `+` `str``(res))`

Output

```The day number : 339
Resolved date : 12-04-2020```

Method #2 : Using timedelta()

In this, we initialize the date by 1st of January and then add number of days using timedelta(), resultant gives the date required.

## Python3

 `# Python3 code to demonstrate working of` `# Convert day number to date in particular year` `# Using datetime.strptime()` `from` `datetime ``import` `datetime, date, timedelta`   `# initializing day number` `day_num ``=` `"339"`   `# print day number` `print``(``"The day number : "` `+` `str``(day_num))`   `# adjusting day num` `day_num.rjust(``3` `+` `len``(day_num), ``'0'``)`   `# Initialize year` `year ``=` `"2020"`   `# Initializing start date` `strt_date ``=` `date(``int``(year), ``1``, ``1``)`   `# converting to date` `res_date ``=` `strt_date ``+` `timedelta(days``=``int``(day_num) ``-` `1``)` `res ``=` `res_date.strftime(``"%m-%d-%Y"``)`   `# printing result` `print``(``"Resolved date : "` `+` `str``(res))`

Output

```The day number : 339
Resolved date : 12-04-2020```

Time Complexity:  is O(1), as it involves basic arithmetic operations, datetime operations, and string operations that take constant time.

Auxiliary Space: is O(1), as it uses only a fixed number of variables and does not require any data structure to store data.

Method #3: Using divmod()

This program converts a day number and year into a date using the datetime module in Python. It adjusts the day number and initializes a start date, and then adds the number of days to the start date using timedelta(). Finally, it formats the resulting date string using strftime() and prints the result.

## Python3

 `# Python3 code to demonstrate working of` `# Convert day number to date in particular year` `# Using datetime.strptime()` `from` `datetime ``import` `datetime, date, timedelta`   `# initializing day number` `day_num ``=` `"339"`   `# print day number` `print``(``"The day number : "` `+` `str``(day_num))`   `# adjusting day num` `day_num ``=` `day_num.rjust(``3` `+` `len``(day_num), ``'0'``)`   `# Initialize year` `year ``=` `"2020"`   `# Initializing start date` `strt_date ``=` `date(``int``(year), ``1``, ``1``)`   `# converting to date` `res_date ``=` `strt_date ``+` `timedelta(days``=``int``(day_num) ``-` `1``)` `res ``=` `res_date.strftime(``"%m-%d-%Y"``)`   `# printing result` `print``(``"Resolved date : "` `+` `str``(res))`

Output

```The day number : 339
Resolved date : 12-04-2020```

Time complexity: O(1) as it does not depend on the size of the input.
Auxiliary space: O(1) as it only uses a fixed number of variables to store the input and output, and does not depend on the size of the input.

Method 4 : date.fromordinal() method.

This method takes a proleptic Gregorian ordinal and returns the corresponding date.

Here’s the step-by-step approach:

1. Initialize the day number and the year.
2. Convert the year to a proleptic Gregorian ordinal using the date.toordinal() method.
3. Add the day number to the ordinal obtained in step 2 and subtract 1 to get the proleptic Gregorian ordinal of the desired date.
4. Convert the proleptic Gregorian ordinal to a date using the date.fromordinal() method.
5. Format the date as required.

## Python3

 `# Python3 code to demonstrate working of` `# Convert day number to date in particular year` `# Using date.fromordinal()`   `from` `datetime ``import` `date`   `# initializing day number` `day_num ``=` `"339"`   `# print day number` `print``(``"The day number : "` `+` `str``(day_num))`   `# adjusting day num` `day_num ``=` `day_num.rjust(``3` `+` `len``(day_num), ``'0'``)`   `# Initialize year` `year ``=` `"2020"`   `# Convert year to a proleptic Gregorian ordinal` `year_ordinal ``=` `date(``int``(year), ``1``, ``1``).toordinal()`   `# Calculate proleptic Gregorian ordinal of the desired date` `desired_ordinal ``=` `year_ordinal ``+` `int``(day_num) ``-` `1`   `# Convert proleptic Gregorian ordinal to date` `res_date ``=` `date.fromordinal(desired_ordinal)`   `# Format the date` `res ``=` `res_date.strftime(``"%m-%d-%Y"``)`   `# printing result` `print``(``"Resolved date : "` `+` `str``(res))`

Output

```The day number : 339
Resolved date : 12-04-2020```

The time complexity of this approach is O(1) .

The Auxiliary space required is O(1) as well.

Method #5: Using dateutil.parser.parse() method

Step-by-step approach:

1. Import the required module dateutil:
2. Initialize the year and day number:
3. Create a string representing the date using the format YYYY-DDD, where YYYY is the year and DDD is the day number:
4. Use the parse() method to parse the string and convert it to a datetime object:
5. Convert the datetime object to a date object:
6. Format the result using the strftime() method:
7. Print the result:

## Python3

 `from` `datetime ``import` `timedelta` `from` `dateutil ``import` `parser`   `# initializing year and day number` `year ``=` `"2020"` `day_num ``=` `"339"`   `# creating date string` `date_str ``=` `year ``+` `"-01-01"`  `# January 1st of the given year` `date_obj ``=` `parser.parse(date_str)  ``# parse date string to datetime object`   `# adding days to datetime object` `date_res ``=` `date_obj ``+` `timedelta(days``=``int``(day_num) ``-` `1``)`   `# formatting result date` `res ``=` `date_res.strftime(``"%m-%d-%Y"``)`   `# printing result` `print``(``"Resolved date : "` `+` `str``(res))`

```OUTPUT:
Resolved date : 12-04-2020```

Time complexity: The time complexity of this method is O(1) as it does not involve any loops or iterations.

Auxiliary space: The auxiliary space used by this method is O(1) as it does not require any additional data structures.

Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out - check it out now!