Days between dates: Difference between revisions

(Added PL/M)
Line 1,268:
 
{{FormulaeEntry|page=https://formulae.org/?timeZone=America%2FLos_Angeles&script=examples/Days_between_dates}}
 
'''Solution'''
 
Note. For this script, the time zone is intentionally set to America/Los_Angeles, because it observes [https://en.wikipedia.org/wiki/Daylight_saving_time daylight saving time], It is necesary to solve this exercise.
 
Provided that the ToNumber expression applied to a time expression reduces to the number of milliseconds of such that time from the [https://en.wikipedia.org/wiki/Epoch_(computing) epoch]:
 
[[File:Fōrmulæ - Days between dates 01.png]]
 
[[File:Fōrmulæ - Days between dates 02.png]]
 
The solution seems easy, calculating the difference between two times (in milliseconds), and dividing by 86,4000,000 (number of milliseconds in a day):
 
[[File:Fōrmulæ - Days between dates 03.png]]
 
[[File:Fōrmulæ - Days between dates 04.png]]
 
However, it does not work if one time is in daylight saving time, and the other one is in standard time:
 
[[File:Fōrmulæ - Days between dates 05.png]]
 
[[File:Fōrmulæ - Days between dates 06.png]]
 
[[File:Fōrmulæ - Days between dates 07.png]]
 
[[File:Fōrmulæ - Days between dates 08.png]]
 
'''Solution 1'''
 
The first solution consists in simply rounding the result to the nearest integer:
 
[[File:Fōrmulæ - Days between dates 09.png]]
 
[[File:Fōrmulæ - Days between dates 10.png]]
 
'''Solution 2'''
 
The expression GetTimeZoneOffset reduces to the offset (in minutes) of the given time.
 
[[File:Fōrmulæ - Days between dates 11.png]]
 
[[File:Fōrmulæ - Days between dates 12.png]]
 
[[File:Fōrmulæ - Days between dates 13.png]]
 
[[File:Fōrmulæ - Days between dates 14.png]]
 
The solution consist in taking this difference in account.
 
So, the function that works correctly is:
 
[[File:Fōrmulæ - Days between dates 15.png]]
 
'''Test cases'''
 
[[File:Fōrmulæ - Days between dates 16.png]]
 
[[File:Fōrmulæ - Days between dates 17.png]]
 
Notice that it works even for fractions of days:
 
[[File:Fōrmulæ - Days between dates 18.png]]
 
[[File:Fōrmulæ - Days between dates 19.png]]
 
=={{header|Go}}==
2,120

edits