Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Python program to calculate Date, Month and Year from Seconds

  • Last Updated : 15 Mar, 2021

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

Step-by-step Approach:

  • Create a function to get the number of days in a year.

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.

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.

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.

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.

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:

Python3




# function to get num 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
  
      
# 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
  
  
# 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
  
  
# 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
    
  
# 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)

Output:

01-01-1947
11-29-1950
12-22-2259




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!