* lisp/org-clock (org-clocktable-steps): Fix weekly-step clock report ignoring hours between start of period and start of week, when start of period is on a day of week numerically less than start of week. Clock report now always inserts a "week" starting at the start of the period, if necessary; all following weeks start on the start of the week as expected. TINYCHANGE --- lisp/org-clock.el | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 9dc501500..0c899dfa2 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -2725,7 +2725,9 @@ LEVEL is an integer. Indent by two spaces per level above 1." (setq te (float-time (apply #'encode-time (org-parse-time-string te)))))) (setq tsb (if (eq step0 'week) - (- ts (* 86400 (- (nth 6 (decode-time (seconds-to-time ts))) ws))) + (let ((dow (nth 6 (decode-time (seconds-to-time ts))))) + (if (< dow ws) ts + (- ts (* 86400 (- dow ws))))) ts)) (setq p1 (plist-put p1 :header "")) (setq p1 (plist-put p1 :step nil)) @@ -2735,9 +2737,12 @@ LEVEL is an integer. Indent by two spaces per level above 1." (setq p1 (plist-put p1 :tstart (format-time-string (org-time-stamp-format nil t) (seconds-to-time (max tsb ts))))) + (setq tsb (+ tsb (let ((dow (nth 6 (decode-time (seconds-to-time ts))))) + (if (= dow ws) step + (* 86400 (- ws dow)))))) (setq p1 (plist-put p1 :tend (format-time-string (org-time-stamp-format nil t) - (seconds-to-time (min te (setq tsb (+ tsb step))))))) + (seconds-to-time (min te tsb))))) (insert "\n" (if (eq step0 'day) "Daily report: " "Weekly report starting on: ") (plist-get p1 :tstart) "\n") -- 2.12.1.windows.1