home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-12-02 | 1.9 KB | 71 lines | [TEXT/????] |
- NB. date and time utilities
- NB.
- NB. calendar calendar for year {months}
- NB. togreg to gregorian date
- NB. tojul to julian day number
- NB. tstamp formatted timestamp
-
- SCRIPTNAMES=: 'calendar togreg tojul tstamp'
-
- NB. calendar
- calendar=: 0 : 0
- NB. calendar for year, as 12 element list
- NB. argument is one or more numbers: year, months
- b=. y+-/<.4 100 400%~<:y=. {.y.
- r=. 28+3,(~:/0=4 100 400|y),10$5$3 2
- r=. ,(-7|b+0,+/\}:r)|."0 1 r(]&>:*"1>/)i.42
- m=. m,(0=#m=. <:}.y.)#i.12
- h=. 'JanFebMarAprMayJunJulAugSepOctNovDec'
- h=. ' Su Mo Tu We Th Fr Sa',:"1~_3(_12&{.)\h
- <"2 m{h,"2[12 6 21$,>(<'') ((r=0)#i.#r)} <"1 [ 3":,.r
- )
-
- NB. togreg
- togreg=: 0 : 0
- 0 togreg y.
- :
- NB. converts day numbers to dates, converse <tojul>
- NB. y. = day numbers
- NB. x. = optional:
- NB. 0 - result in form <yyyy mm dd> (default)
- NB. 1 - result in form <yyyymmdd>
- s=. $y.
- y.=. 657377.75 +, y.
- d=. <. y. - 36524.25 * c=. <. y. % 36524.25
- d=. <.1.75 + d - 365.25 * y=. <. (d+0.75) % 365.25
- r=. (1+12|m+2) ,: <. 0.41+d-30.6* m=. <. (d-0.59) % 30.6
- r=. s $ |: ((c*100)+y+m >: 10) ,r [ $.=. x.#$.
- 100 #. r
- )
-
- NB. tojul
- tojul=: 0 : 0
- 0 tojul y.
- :
- NB. convert dates to day numbers, converse <togreg>
- NB. y. = dates
- NB. x. = optional:
- NB. 0 - dates in form <yyyy mm dd> (default)
- NB. 1 - dates in form <yyyymmdd>
- NB. 0 = tojul 1800 1 1, or earlier
- $.=. (-.x.) }. $.
- y.=. 0 100 100 #: y.
- y.=. ((*/r=. }: $y.) , {:$y.) $,y.
- 'ymd'=. <"_1 |: y.
- y=. 0 100 #: y - m <: 2
- n=. +/ |: <. 36524.25 365.25 *"1 y
- n=. n + <. 0.41 + 0 30.6 #. (12 | m-3),"0 d
- 0 >. r $ n - 657378
- )
-
- NB. tstamp
- tstamp=: 0 : 0
- y=. >(0=#y.){y.;6!:0 ''
- 'ymdhns'=. 6 {. y
- f=. _3&{.@('0'&,@(":@]))
- mth=. _3[\' JanFebMarAprMayJunJulAugSepOctNovDec'
- t=. ;f&.>100|y,h,n,s
- t=. ' ::' 0 3 6 9}t
- (2":d),' ',(m{mth),t
- )
-