mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-23 21:37:34 +00:00
Fix off-by-one error in decoded-time-add (with months)
* lisp/calendar/time-date.el (decoded-time-add): Fix month addition, which was off-by-one.
This commit is contained in:
parent
9b277a2f8e
commit
cb9fc5e773
2 changed files with 23 additions and 3 deletions
|
|
@ -401,10 +401,10 @@ changes in daylight saving time are not taken into account."
|
|||
(when (decoded-time-year delta)
|
||||
(cl-incf (decoded-time-year time) (decoded-time-year delta)))
|
||||
|
||||
;; Months are pretty simple.
|
||||
;; Months are pretty simple, but start at 1 (for January).
|
||||
(when (decoded-time-month delta)
|
||||
(let ((new (+ (decoded-time-month time) (decoded-time-month delta))))
|
||||
(setf (decoded-time-month time) (mod new 12))
|
||||
(let ((new (+ (1- (decoded-time-month time)) (decoded-time-month delta))))
|
||||
(setf (decoded-time-month time) (1+ (mod new 12)))
|
||||
(cl-incf (decoded-time-year time) (/ new 12))))
|
||||
|
||||
;; Adjust for month length (as described in the doc string).
|
||||
|
|
|
|||
|
|
@ -123,4 +123,24 @@
|
|||
(should (equal (decoded-time-period '((135 . 10) 0 0 0 0 0 nil nil nil))
|
||||
13.5)))
|
||||
|
||||
(ert-deftest test-time-wrap-addition ()
|
||||
(should (equal (decoded-time-add '(0 0 0 1 11 2008 nil nil nil)
|
||||
(make-decoded-time :month 1))
|
||||
'(0 0 0 1 12 2008 nil nil nil)))
|
||||
(should (equal (decoded-time-add '(0 0 0 1 12 2008 nil nil nil)
|
||||
(make-decoded-time :month 1))
|
||||
'(0 0 0 1 1 2009 nil nil nil)))
|
||||
(should (equal (decoded-time-add '(0 0 0 1 11 2008 nil nil nil)
|
||||
(make-decoded-time :month 12))
|
||||
'(0 0 0 1 11 2009 nil nil nil)))
|
||||
(should (equal (decoded-time-add '(0 0 0 1 11 2008 nil nil nil)
|
||||
(make-decoded-time :month 13))
|
||||
'(0 0 0 1 12 2009 nil nil nil)))
|
||||
(should (equal (decoded-time-add '(0 0 0 30 12 2008 nil nil nil)
|
||||
(make-decoded-time :day 1))
|
||||
'(0 0 0 31 12 2008 nil nil nil)))
|
||||
(should (equal (decoded-time-add '(0 0 0 30 12 2008 nil nil nil)
|
||||
(make-decoded-time :day 2))
|
||||
'(0 0 0 1 1 2009 nil nil nil))))
|
||||
|
||||
;;; time-date-tests.el ends here
|
||||
|
|
|
|||
Loading…
Reference in a new issue