Days between dates: Difference between revisions
Content added Content deleted
m (→{{header|Phix}}: added syntax colouring the hard way, phix/basics) |
|||
Line 943: | Line 943: | ||
=={{header|Phix}}== |
=={{header|Phix}}== |
||
{{libheader|Phix/basics}} |
|||
<lang Phix>include builtins\timedate.e |
|||
<!--<lang Phix>--> |
|||
⚫ | |||
<span style="color: #008080;">include</span> <span style="color: #000000;">builtins<span style="color: #0000FF;">\<span style="color: #004080;">timedate<span style="color: #0000FF;">.<span style="color: #000000;">e</span> |
|||
set_timedate_formats({"YYYY-MM-DD","DD/MM/YYYY","YYYY/MM/DD"}) |
|||
⚫ | |||
<span style="color: #7060A8;">set_timedate_formats<span style="color: #0000FF;">(<span style="color: #0000FF;">{<span style="color: #008000;">"YYYY-MM-DD"<span style="color: #0000FF;">,<span style="color: #008000;">"DD/MM/YYYY"<span style="color: #0000FF;">,<span style="color: #008000;">"YYYY/MM/DD"<span style="color: #0000FF;">}<span style="color: #0000FF;">)</span> |
|||
constant SECONDS_TO_DAYS = 60*60*24 |
|||
<span style="color: #008080;">constant</span> <span style="color: #000000;">SECONDS_TO_DAYS</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">60<span style="color: #0000FF;">*<span style="color: #000000;">60<span style="color: #0000FF;">*<span style="color: #000000;">24</span> |
|||
procedure test(string d1, d2, desc="") |
|||
timedate td1 = parse_date_string(d1), |
|||
<span style="color: #008080;">procedure</span> <span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #004080;">string</span> <span style="color: #000000;">d1<span style="color: #0000FF;">,</span> <span style="color: #000000;">d2<span style="color: #0000FF;">,</span> <span style="color: #000000;">desc<span style="color: #0000FF;">=<span style="color: #008000;">""<span style="color: #0000FF;">)</span> |
|||
td2 = parse_date_string(d2) |
|||
<span style="color: #004080;">timedate</span> <span style="color: #000000;">td1</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">parse_date_string<span style="color: #0000FF;">(<span style="color: #000000;">d1<span style="color: #0000FF;">)<span style="color: #0000FF;">,</span> |
|||
atom s = timedate_diff(td1,td2,DT_DAY), |
|||
<span style="color: #000000;">td2</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">parse_date_string<span style="color: #0000FF;">(<span style="color: #000000;">d2<span style="color: #0000FF;">)</span> |
|||
d = s/SECONDS_TO_DAYS |
|||
<span style="color: #004080;">atom</span> <span style="color: #000000;">s</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">timedate_diff<span style="color: #0000FF;">(<span style="color: #000000;">td1<span style="color: #0000FF;">,<span style="color: #000000;">td2<span style="color: #0000FF;">,<span style="color: #000000;">DT_DAY<span style="color: #0000FF;">)<span style="color: #0000FF;">,</span> |
|||
string e = elapsed(s)&desc |
|||
<span style="color: #000000;">d</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">s<span style="color: #0000FF;">/<span style="color: #000000;">SECONDS_TO_DAYS</span> |
|||
printf(1,"Days between %s and %s: %d [%s]\n",{d1,d2,d,e}) |
|||
<span style="color: #004080;">string</span> <span style="color: #000000;">e</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">elapsed<span style="color: #0000FF;">(<span style="color: #000000;">s<span style="color: #0000FF;">)<span style="color: #0000FF;">&<span style="color: #000000;">desc</span> |
|||
end procedure |
|||
<span style="color: #7060A8;">printf<span style="color: #0000FF;">(<span style="color: #000000;">1<span style="color: #0000FF;">,<span style="color: #008000;">"Days between %s and %s: %d [%s]\n"<span style="color: #0000FF;">,<span style="color: #0000FF;">{<span style="color: #000000;">d1<span style="color: #0000FF;">,<span style="color: #000000;">d2<span style="color: #0000FF;">,<span style="color: #000000;">d<span style="color: #0000FF;">,<span style="color: #000000;">e<span style="color: #0000FF;">}<span style="color: #0000FF;">)</span> |
|||
test("1969-12-31","1970-01-01") |
|||
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span> |
|||
test("1995-11-21","1995-11-21",", same date") |
|||
<span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #008000;">"1969-12-31"<span style="color: #0000FF;">,<span style="color: #008000;">"1970-01-01"<span style="color: #0000FF;">)</span> |
|||
test("2019-01-02","2019-01-01",", negative date") |
|||
<span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #008000;">"1995-11-21"<span style="color: #0000FF;">,<span style="color: #008000;">"1995-11-21"<span style="color: #0000FF;">,<span style="color: #008000;">", same date"<span style="color: #0000FF;">)</span> |
|||
test("2019-01-01","2019-03-01",", non-leap year") |
|||
<span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #008000;">"2019-01-02"<span style="color: #0000FF;">,<span style="color: #008000;">"2019-01-01"<span style="color: #0000FF;">,<span style="color: #008000;">", negative date"<span style="color: #0000FF;">)</span> |
|||
test("2020-01-01","2020-03-01",", leap year") |
|||
<span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #008000;">"2019-01-01"<span style="color: #0000FF;">,<span style="color: #008000;">"2019-03-01"<span style="color: #0000FF;">,<span style="color: #008000;">", non-leap year"<span style="color: #0000FF;">)</span> |
|||
test("1970-01-01", "2019/10/18") |
|||
<span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #008000;">"2020-01-01"<span style="color: #0000FF;">,<span style="color: #008000;">"2020-03-01"<span style="color: #0000FF;">,<span style="color: #008000;">", leap year"<span style="color: #0000FF;">)</span> |
|||
test("1970-01-01", "18/10/2019")</lang> |
|||
<span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #008000;">"1970-01-01"<span style="color: #0000FF;">,</span> <span style="color: #008000;">"2019/10/18"<span style="color: #0000FF;">)</span> |
|||
<span style="color: #000000;">test<span style="color: #0000FF;">(<span style="color: #008000;">"1970-01-01"<span style="color: #0000FF;">,</span> <span style="color: #008000;">"18/10/2019"<span style="color: #0000FF;">) |
|||
<!--</lang>--> |
|||
As shown, timedate_diff() can optionally round to the nearest whole number of days [else omit DT_DAY].<br> |
As shown, timedate_diff() can optionally round to the nearest whole number of days [else omit DT_DAY].<br> |
||
Note that elapsed() assumes all years are exactly 365 days, and in no way takes leap years into consideration |
Note that elapsed() assumes all years are exactly 365 days, and in no way takes leap years into consideration |