Days between dates: Difference between revisions
m
→{{header|Phix}}: added syntax colouring the hard way, phix/basics
m (→{{header|Phix}}: added syntax colouring the hard way, phix/basics) |
|||
Line 943:
=={{header|Phix}}==
{{libheader|Phix/basics}}
<!--<lang Phix>-->
-- specify as many or as few permitted formats as you like:▼
<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>
▲ <span style="color: #000080;font-style:italic;">-- specify as many or as few permitted formats as you like:</span>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<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>
<span style="color: #008080;">end</span> <span style="color: #008080;">procedure</span>
<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>
<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>
<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>
<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>
<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>
<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>
Note that elapsed() assumes all years are exactly 365 days, and in no way takes leap years into consideration
|