⍝ ⍵ days later than 1899-12-31 00:00:00:

    date 12791                              ⍝ Whole number of days.
1935 1 8 0 0 0 0

    date 12791.51388889                     ⍝ Part way through day.
1935 1 8 12 20 0 0

    show←timestamp∘''                       ⍝ Format ⎕TS vector.

    show date 1e5÷3                         ⍝ Fractional number of days.
1991-04-06 08:00:00 

    show date ¯7596.520833                  ⍝ Negative days before 1899 12 31.
1879-03-14 11:30:00 

    date 2 2⍴14892 15509 15761 14798        ⍝ (⍴date ⍵) ≡ (⍴⍵),7.
1940 10  9 0 0 0 0
1942  6 18 0 0 0 0
                  
1943  2 25 0 0 0 0
1940  7  7 0 0 0 0

    date ¯53799 + 0 1                       ⍝ 1752 calendar reform
1752 9  2 0 0 0 0
1752 9 14 0 0 0 0

    ⍝ Peter Michael's neat one-liners:

    n_days←{{¯693896+(⍵>730500)+⌊36524×⍵÷36525}¯60++/⍵[2]↑(⌈365.25⊥⍵[1 3]),31,(29-×4|1⊃⍵),9⍴5⍴31 30}
    n_date←{y,m,1+d-(m←m+.≤d)⊃m←+\0 31,(29-×4|1⊃y d←⌊0 365.25⊤694035+⌊(36525×⍵-60.5+0.5××⍵-36584)÷36524),9⍴5⍴31 30}
    
    {⍵≡n_date n_days ⍵} 3↑⎕ts               ⍝ full circle.
1
    dvec←182680 182681                      ⍝ dates around leap-year 2400.

    date dvec
2400 2 28 0 0 0 0
2400 2 29 0 0 0 0

    ↑n_date¨ dvec
2400 2 28
2400 3  1

    eudate←¯115860∘date                     ⍝ European calendar reform:

    eudate ¯115860+0 1                      ⍝ 1582: Oct 4th and 15th contiguous.
1582 10  4 0 0 0 0
1582 10 15 0 0 0 0

    Alpha ##.test'Dates'                    ⍝ test for both days and dates.

⍝∇ date timestamp

Back to: code

Back to: Workspaces