racket/date: add correctly spelled scaliger functions

This commit is contained in:
Matthew Flatt 2019-10-22 17:08:52 -06:00 committed by Sam Tobin-Hochstadt
parent b1cae06897
commit f26181dd84
3 changed files with 28 additions and 10 deletions

View File

@ -226,16 +226,26 @@ local time by default or UTC if @racket[local-time?] is
error is signaled, otherwise an integer is returned.}
@defproc[(date->julian/scalinger [date date?]) exact-integer?]{
@defproc[(date->julian/scaliger [date date?]) exact-integer?]{
Converts a date structure (up to 2099 BCE Gregorian) into a Julian
date number. The returned value is not a strict Julian number, but
rather Scalinger's version, which is off by one for easier
rather Scaliger's version, which is off by one for easier
calculations.}
@defproc[(julian/scalinger->string [date-number exact-integer?])
@defproc[(julian/scaliger->string [date-number exact-integer?])
string?]{
Converts a Julian number (Scalinger's off-by-one version) into a
Converts a Julian number (Scaliger's off-by-one version) into a
string.}
@deftogether[(
@defproc[(date->julian/scalinger [date date?]) exact-integer?]
@defproc[(julian/scalinger->string [date-number exact-integer?])
string?]
)]{
The same as @racket[date->julian/scaliger] and
@racket[julian/scaliger->string], but misspelled.}

View File

@ -73,7 +73,9 @@
(test-string 'julian #f "JD 2 453 860")
(test-string 'julian #t "JD 2 453 860, 03:02:01")
(test 2453860 date->julian/scaliger d)
(test 2453860 date->julian/scalinger d)
(test "JD 2 453 860" julian/scaliger->string 2453860)
(test "JD 2 453 860" julian/scalinger->string 2453860))
;; Bad dates

View File

@ -17,6 +17,8 @@
(any/c)
. ->* .
exact-integer?)]
[date->julian/scaliger (date? . -> . exact-integer?)]
[julian/scaliger->string (exact-integer? . -> . string?)]
[date->julian/scalinger (date? . -> . exact-integer?)]
[julian/scalinger->string (exact-integer? . -> . string?)])
@ -123,8 +125,8 @@
(values (list week-day ", " day day-th " " month " " year)
(list ", " hour12 ":" minute am-pm))]
[(julian)
(values (list (julian/scalinger->string
(date->julian/scalinger date)))
(values (list (julian/scaliger->string
(date->julian/scaliger date)))
(list ", " hour24 ":" minute ":" second))]
[(iso-8601)
(values
@ -308,12 +310,12 @@
(date-minute d)
(date-second d)))
;; date->julian/scalinger :
;; date->julian/scaliger :
;; date -> number [julian-day]
;; Note: This code is correct until 2099 CE Gregorian
(define (date->julian/scalinger date)
(define (date->julian/scaliger date)
(define day (date-day date))
(define month (date-month date))
(define d-year (date-year date))
@ -348,10 +350,10 @@
gregorian-adjustment))
final-date)
;; julian/scalinger->string :
;; julian/scaliger->string :
;; number [julian-day] -> string [julian-day-format]
(define (julian/scalinger->string julian-day)
(define (julian/scaliger->string julian-day)
(apply string-append
(cons "JD "
(reverse
@ -372,3 +374,7 @@
(cadr reversed-digits)
(car reversed-digits)))
(loop (cdr (cdr (cdr reversed-digits))))))))))))
;; Misspelled names for backward compatibility:
(define (date->julian/scalinger d) (date->julian/scaliger d))
(define (julian/scalinger->string i) (julian/scaliger->string i))