Function: calendar-absolute-from-gregorian
calendar-absolute-from-gregorian is a byte-compiled function defined
in calendar.el.gz.
Signature
(calendar-absolute-from-gregorian DATE)
Documentation
The number of days elapsed between the Gregorian date 12/31/1 BC and DATE.
The Gregorian date Sunday, December 31, 1 BC is imaginary. DATE is a list of the form (month day year). A negative year is interpreted as BC; -1 being 1 BC, and so on. Dates before 12/31/1 BC return negative results.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/calendar.el.gz
(defsubst calendar-absolute-from-gregorian (date)
"The number of days elapsed between the Gregorian date 12/31/1 BC and DATE.
The Gregorian date Sunday, December 31, 1 BC is imaginary.
DATE is a list of the form (month day year). A negative year is
interpreted as BC; -1 being 1 BC, and so on. Dates before 12/31/1 BC
return negative results."
(let ((year (calendar-extract-year date))
offset-years)
(cond ((zerop year)
(user-error "There was no year zero"))
((> year 0)
(setq offset-years (1- year))
(+ (calendar-day-number date) ; days this year
(* 365 offset-years) ; + days in prior years
(/ offset-years 4) ; + Julian leap years
(- (/ offset-years 100)) ; - century years
(/ offset-years 400))) ; + Gregorian leap years
(t
;; Years between date and 1 BC, excluding 1 BC (1 for 2 BC, etc).
(setq offset-years (abs (1+ year)))
(- (calendar-day-number date)
(* 365 offset-years)
(/ offset-years 4)
(- (/ offset-years 100))
(/ offset-years 400)
(calendar-day-number '(12 31 -1))))))) ; days in year 1 BC