Days between dates: Difference between revisions

From Rosetta Code
Content added Content deleted
(some inline explanations)
(Task starts as draft 👍)
Line 1: Line 1:
{{task|Date and time}}
{{draft task|Date and time}}


;Task:
;Task:

Revision as of 11:57, 30 September 2019

Days between dates is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Task

Calculate the number of days between two dates. Date input should be in the form YYYY-MM-DD.

The initial example in python is derived from discussion at: https://stackoverflow.com/questions/12862226/the-implementation-of-calculating-the-number-of-days-between-2-dates

This example is similar to one described on the following page as the origin based algorithm, there implemented in c: http://www.sunshine2k.de/articles/coding/datediffindays/calcdiffofdatesindates.html.


Python

<lang python>

  1. !/usr/bin/python

import sys

Difference between two dates = g(y2,m2,d2) - g(y1,m1,d1)

   Where g() gives us the Gregorian Calendar Day

def days( y,m,d ):

  input year and month are shifted to begin the year in march
 m = (m + 9) % 12 
 y = y - m/10
  with (m*306 + 5)/10 the number of days from march 1 to the current 'm' month 
 result = 365*y + y/4 - y/100 + y/400 + (m*306 + 5)/10 + ( d - 1 )
 return result

def diff(one,two):

 [y1,m1,d1] = one.split('-')
 [y2,m2,d2] = two.split('-')
 # strings to integers
 year2 = days( int(y2),int(m2),int(d2))
 year1 = days( int(y1), int(m1), int(d1) )
 return year2 - year1

if __name__ == "__main__":

 one = sys.argv[1]
 two = sys.argv[2]
 print diff(one,two)

</lang>

Output:
python days-between.py 2019-01-01 2019-09-30
272