Skip to content
Related Articles

Related Articles

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

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning – Basic Level Course

My Personal Notes arrow_drop_up
Recommended Articles
Page :