Always do a leap year check when adding timestamps
parent
e7487bfe98
commit
077e5dea2a
|
@ -176,3 +176,13 @@ IN: calendar.tests
|
||||||
[ t ] [ 1356998399 unix-time>timestamp 2013 <year-gmt> 1 seconds time- = ] unit-test
|
[ t ] [ 1356998399 unix-time>timestamp 2013 <year-gmt> 1 seconds time- = ] unit-test
|
||||||
|
|
||||||
[ t ] [ 1500000000 random [ unix-time>timestamp timestamp>unix-time ] keep = ] unit-test
|
[ t ] [ 1500000000 random [ unix-time>timestamp timestamp>unix-time ] keep = ] unit-test
|
||||||
|
|
||||||
|
[ t ] [
|
||||||
|
2009 1 29 <date> 1 months time+
|
||||||
|
2009 3 1 <date> =
|
||||||
|
] unit-test
|
||||||
|
|
||||||
|
[ t ] [
|
||||||
|
2008 1 29 <date> 1 months time+
|
||||||
|
2008 2 29 <date> =
|
||||||
|
] unit-test
|
||||||
|
|
|
@ -99,12 +99,12 @@ CONSTANT: day-abbreviations3
|
||||||
: day-abbreviation3 ( n -- string )
|
: day-abbreviation3 ( n -- string )
|
||||||
day-abbreviations3 nth ; inline
|
day-abbreviations3 nth ; inline
|
||||||
|
|
||||||
: average-month ( -- ratio ) 30+5/12 ; inline
|
CONSTANT: average-month 30+5/12
|
||||||
: months-per-year ( -- integer ) 12 ; inline
|
CONSTANT: months-per-year 12
|
||||||
: days-per-year ( -- ratio ) 3652425/10000 ; inline
|
CONSTANT: days-per-year 3652425/10000
|
||||||
: hours-per-year ( -- ratio ) 876582/100 ; inline
|
CONSTANT: hours-per-year 876582/100
|
||||||
: minutes-per-year ( -- ratio ) 5259492/10 ; inline
|
CONSTANT: minutes-per-year 5259492/10
|
||||||
: seconds-per-year ( -- integer ) 31556952 ; inline
|
CONSTANT: seconds-per-year 31556952
|
||||||
|
|
||||||
:: julian-day-number ( year month day -- n )
|
:: julian-day-number ( year month day -- n )
|
||||||
#! Returns a composite date number
|
#! Returns a composite date number
|
||||||
|
@ -200,7 +200,7 @@ GENERIC: +second ( timestamp x -- timestamp )
|
||||||
[ 3 >>month 1 >>day ] when ;
|
[ 3 >>month 1 >>day ] when ;
|
||||||
|
|
||||||
M: integer +year ( timestamp n -- timestamp )
|
M: integer +year ( timestamp n -- timestamp )
|
||||||
[ [ + ] curry change-year adjust-leap-year ] unless-zero ;
|
[ + ] curry change-year adjust-leap-year ;
|
||||||
|
|
||||||
M: real +year ( timestamp n -- timestamp )
|
M: real +year ( timestamp n -- timestamp )
|
||||||
[ float>whole-part swapd days-per-year * +day swap +year ] unless-zero ;
|
[ float>whole-part swapd days-per-year * +day swap +year ] unless-zero ;
|
||||||
|
|
Loading…
Reference in New Issue