\ Collected Algorithms from ACM, Volume 1 Algorithms 1-220,
\ 1980; Association for Computing Machinery Inc., New York,
\ ISBN 0-89791-017-6
\ (c) Copyright 1994 Everett F. Carter. Permission is granted by the
\ author to use this software for any application provided this
\ copyright notice is preserved.
\ (c) Copyright 2008 Hans L. Bezemer, 4tH version
[UNDEFINED] today [IF]
VARIABLE da \ temporary variable day
VARIABLE mo \ temporary variable month
VARIABLE yr \ temporary variable year
86400 CONSTANT s/day \ seconds per day
3600 CONSTANT s/hour \ seconds per hour
60 CONSTANT s/min \ seconds per minute
[UNDEFINED] tz [IF]
1 3600 [*] +CONSTANT tz \ Middle European Timezone
[THEN]
: JDAY ( d m y -- jd) \ day, month, year to Julian date
swap dup 2 > if 3 - swap else 9 + swap 1- then rot >r swap >r 100 /mod >r
1461 * 2/ 2/ r> 146097 * 2/ 2/ + r> 153 * 1+ 1+ 5 / + r> + 1721119 +
;
: JDATE ( jd -- d m y) \ Julian date to day, month, year
1721119 - 2* 2* 1- dup 146097 / dup yr ! 146097 * - 2/ 2/ 2* 2* 3 + 1461 /mod
swap 4 + 2/ 2/ 5 * 3 - 153 /mod mo ! 5 + 5 / da ! yr @ 100 * + yr !
mo @ 10 < if 3 mo +! else -9 mo +! 1 yr +! then da @ mo @ yr @
;
\ POSIX conversions
: POSIX>JDAY s/day / 2440588 + ; ( n1 -- n2)
: POSIX>TIME s/day mod s/hour /mod >r s/min /mod r> ;
: WEEKDAY jday 7 mod ; ( d m y -- n)
\ quick access to current date/time
: TODAY time tz posix>jday jdate ; ( -- d m y)
: NOW time tz posix>time ; ( -- h m s)
[DEFINED] 4TH# [IF]
hide da
hide mo
hide yr
[THEN]
[THEN]
|