Function: solar-equinoxes-solstices-1
solar-equinoxes-solstices-1 is a byte-compiled function defined in
solar.el.gz.
Signature
(solar-equinoxes-solstices-1 M Y)
Documentation
Get nearest equinoxes and solstices around Year/Month.
Source Code
;; Defined in /usr/src/emacs/lisp/calendar/solar.el.gz
(defun solar-equinoxes-solstices-1 (m y)
"Get nearest equinoxes and solstices around Year/Month."
(let* ((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)))))))