Python program to calculate Date, Month and Year from Seconds
Given the number of seconds, the task is to write a Python program to calculate the date, month, and year in the format MM-DD-YYYY that have been passed from 1 January 1947.
Examples
Input: 0 Output: 01-01-1947 Input: 123456789 Output: 11-29-1950 Input: 9876543210 Output: 12-22-2259
Approach to Calculate Date, Month, and Year from Seconds
Here is the step-by-step approach on how to calculate the date, Month, and Year in Seconds.
Create a function to Get the Number of Days in a Year
When creating a function to calculate the number of days in a year, it is important to take into account whether the year is a leap year or a common (non-leap) year. Leap years have an extra day in the month of February, making them longer than common years. Specifically, February in a leap year has 29 days instead of the usual 28.
Python
# function to get number of # days in the year # if leap year then 366 # else 365 def dayInYear(year): if (year % 4 ) = = 0 : if (year % 100 ) = = 0 : if (year % 400 ) = = 0 : return 366 else : return 365 else : return 366 else : return 365 |
Create a Function to Count the Years after 1947
To create a function that counts the number of years after 1947, we need to take a list of years as input and then count the years that are greater than 1947.
Python3
# counting the years after 1947 def getYear(days): year = 1946 while True : year + = 1 dcnt = dayInYear(year) if days > = dcnt: days - = dcnt else : break return year, days |
Create a Function to Count the Number of Months
To create a function that counts the number of months in a given list, we first need to understand the criteria for identifying months. In the context of a date, a month is represented as an integer value between 1 and 12.
Python3
# counting the number of months def monthCnt(days, year): if days = = 0 : return 1 , 0 else : month_num = 1 months = [ 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 ] if dayInYear(year) = = 366 : months[ 1 ] = 29 for day in months: if day < days: month_num + = 1 days - = day else : break return month_num, days |
Create a Function to Get a Date using the Number of Seconds
In order to generate a date using the number of seconds, it is important to understand the idea of epoch time or Unix time. Python module has all the essential tools required to work with dates and times.
Python3
# getting date using number of seconds def getDate(num_sec): # converting seconds into days days_sec = 24 * 60 * 60 days = num_sec / / days_sec day_started = False # if some seconds are more if days % days_sec ! = 0 : day_started = True # getting year year, days = getYear(days) # getting month month, days = monthCnt(days, year) if day_started or num_sec = = 0 : days + = 1 # preparing date_format date = "" if month < 10 : date = date + "0" + str (month) else : date = date + str (month) date = date + "-" if days < 10 : date = date + "0" + str (days) else : date = date + str (days) date = date + "-" date = date + str (year) return date |
Create the driver code and call the Required Function
To create the driver code and call the required function.
Python3
# Driver Code # returns 01-01-1970 date_format = getDate( 0 ) print (date_format) # returns 11-29-1973 date_format = getDate( 123456789 ) print (date_format) # returns 12-22-2282 date_format = getDate( 9876543210 ) print (date_format) |
Below is the complete program based on the above stepwise approach
In order to showcase the entire program, we will follow the step-by-step process explained earlier to generate a Python script that computes the area of a rectangle based on its length and width. This involves defining the necessary function, creating the driver code, and invoking the function to obtain the area.
Python3
from datetime import datetime, timedelta def add_seconds_to_date(date_str, seconds): date_format = "%d/%m/%Y" date = datetime.strptime(date_str, date_format) updated_date = date + timedelta(seconds = seconds) updated_date_str = updated_date.strftime( "%Y/%m/%d" ) return updated_date_str date_str = "1/1/1947" seconds = 123456789 result = add_seconds_to_date(date_str, seconds) print (result) |
Output
01-01-1947
11-29-1950
12-22-2259
The time complexity of this program is O(y), where y is the number of years between 1947 and the input year, because the getYear() function iterates over each year from 1947 to the input year.
The space complexity of this program is O(1), because the amount of memory used by the program is constant and does not depend on the input size. The program does not use any data structures that grow with the input size.
Contact Us