Function: solar-equinoxes-solstices
solar-equinoxes-solstices is a byte-compiled function defined in
solar.el.gz.
Signature
(solar-equinoxes-solstices)
Documentation
Local date and time of equinoxes and solstices, if visible in the calendar.
Requires floating point.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/solar.el.gz
;;;###holiday-autoload
(defun solar-equinoxes-solstices ()
"Local date and time of equinoxes and solstices, if visible in the calendar.
Requires floating point."
(let* ((m displayed-month)
(y displayed-year)
(calendar-standard-time-zone-name
(cond
(calendar-time-zone calendar-standard-time-zone-name)
((eq calendar-time-zone-style 'numeric) "+0000")
(t "UTC")))
(calendar-daylight-savings-starts
(if calendar-time-zone calendar-daylight-savings-starts))
(calendar-daylight-savings-ends
(if calendar-time-zone calendar-daylight-savings-ends))
(calendar-time-zone (if calendar-time-zone calendar-time-zone 0))
(k (progn
(calendar-increment-month m y (cond ((= 1 (% m 3)) -1)
((= 2 (% m 3)) 1)
(t 0)))
(1- (/ m 3))))
(d0 (solar-equinoxes/solstices k y))
(d1 (list (car d0) (floor (cadr d0)) (nth 2 d0)))
(h0 (* 24 (- (cadr d0) (floor (cadr d0)))))
(adj (dst-adjust-time d1 h0))
(d (list (caar adj)
(+ (car (cdar adj))
(/ (cadr adj) 24.0))
(cadr (cdar adj))))
;; The following is nearly as accurate, but not quite:
;; (d0 (solar-date-next-longitude
;; (calendar-astro-from-absolute
;; (calendar-absolute-from-gregorian
;; (list (+ 3 (* k 3)) 15 y)))
;; 90))
;; (abs-day (calendar-astro-to-absolute d)))
(abs-day (calendar-absolute-from-gregorian d)))
(list
(list (calendar-gregorian-from-absolute (floor abs-day))
(format "%s %s"
(nth k (if (and calendar-latitude
(< (calendar-latitude) 0))
solar-s-hemi-seasons
solar-n-hemi-seasons))
(solar-time-string
(* 24 (- abs-day (floor abs-day)))
(if (dst-in-effect abs-day)
calendar-daylight-time-zone-name
calendar-standard-time-zone-name)))))))