浏览代码

org-clock: Remove daylight saving time offset in duration

* lisp/org-clock.el (org-clock-out):
(org-clock-sum):
(org-clocktable-steps):
(org-clock-update-time-maybe): Use UTC to compute time differences.

* testing/lisp/test-org-clock.el (test-org-clock/clocktable/scope):
  Update test.
Nicolas Goaziou 8 年之前
父节点
当前提交
112c5ba479
共有 2 个文件被更改,包括 13 次插入11 次删除
  1. 10 8
      lisp/org-clock.el
  2. 3 3
      testing/lisp/test-org-clock.el

+ 10 - 8
lisp/org-clock.el

@@ -1587,9 +1587,9 @@ to, overriding the existing value of `org-clock-out-switch-to-state'."
 	  (insert "--")
 	  (insert "--")
 	  (setq te (org-insert-time-stamp (or at-time now) 'with-hm 'inactive))
 	  (setq te (org-insert-time-stamp (or at-time now) 'with-hm 'inactive))
 	  (setq s (- (float-time
 	  (setq s (- (float-time
-		      (apply #'encode-time (org-parse-time-string te)))
+		      (apply #'encode-time (org-parse-time-string te nil t)))
 		     (float-time
 		     (float-time
-		      (apply #'encode-time (org-parse-time-string ts))))
+		      (apply #'encode-time (org-parse-time-string ts nil t))))
 		h (floor (/ s 3600))
 		h (floor (/ s 3600))
 		s (- s (* 3600 h))
 		s (- s (* 3600 h))
 		m (floor (/ s 60))
 		m (floor (/ s 60))
@@ -1823,9 +1823,9 @@ PROPNAME lets you set a custom text property instead of :org-clock-minutes."
 	   (setq ts (match-string 2)
 	   (setq ts (match-string 2)
 		 te (match-string 3)
 		 te (match-string 3)
 		 ts (float-time
 		 ts (float-time
-		     (apply #'encode-time (org-parse-time-string ts)))
+		     (apply #'encode-time (org-parse-time-string ts nil t)))
 		 te (float-time
 		 te (float-time
-		     (apply #'encode-time (org-parse-time-string te)))
+		     (apply #'encode-time (org-parse-time-string te nil t)))
 		 ts (if tstart (max ts tstart) ts)
 		 ts (if tstart (max ts tstart) ts)
 		 te (if tend (min te tend) te)
 		 te (if tend (min te tend) te)
 		 dt (- te ts)
 		 dt (- te ts)
@@ -2701,14 +2701,16 @@ LEVEL is an integer.  Indent by two spaces per level above 1."
       (pcase-let ((`(,month ,day ,year) (calendar-gregorian-from-absolute ts)))
       (pcase-let ((`(,month ,day ,year) (calendar-gregorian-from-absolute ts)))
 	(setq ts (float-time (encode-time 0 0 0 day month year)))))
 	(setq ts (float-time (encode-time 0 0 0 day month year)))))
      (ts
      (ts
-      (setq ts (float-time (apply #'encode-time (org-parse-time-string ts))))))
+      (setq ts (float-time
+		(apply #'encode-time (org-parse-time-string ts nil t))))))
     (cond
     (cond
      ((numberp te)
      ((numberp te)
       ;; Likewise for te.
       ;; Likewise for te.
       (pcase-let ((`(,month ,day ,year) (calendar-gregorian-from-absolute te)))
       (pcase-let ((`(,month ,day ,year) (calendar-gregorian-from-absolute te)))
 	(setq te (float-time (encode-time 0 0 0 day month year)))))
 	(setq te (float-time (encode-time 0 0 0 day month year)))))
      (te
      (te
-      (setq te (float-time (apply #'encode-time (org-parse-time-string te))))))
+      (setq te (float-time
+		(apply #'encode-time (org-parse-time-string te nil t))))))
     (setq tsb
     (setq tsb
 	  (if (eq step0 'week)
 	  (if (eq step0 'week)
 	      (- ts (* 86400 (- (nth 6 (decode-time (seconds-to-time ts))) ws)))
 	      (- ts (* 86400 (- (nth 6 (decode-time (seconds-to-time ts))) ws)))
@@ -2885,9 +2887,9 @@ Otherwise, return nil."
 	  (setq ts (match-string 1)
 	  (setq ts (match-string 1)
 		te (match-string 3))
 		te (match-string 3))
 	  (setq s (- (float-time
 	  (setq s (- (float-time
-		      (apply #'encode-time (org-parse-time-string te)))
+		      (apply #'encode-time (org-parse-time-string te nil t)))
 		     (float-time
 		     (float-time
-		      (apply #'encode-time (org-parse-time-string ts))))
+		      (apply #'encode-time (org-parse-time-string ts nil t))))
 		neg (< s 0)
 		neg (< s 0)
 		s (abs s)
 		s (abs s)
 		h (floor (/ s 3600))
 		h (floor (/ s 3600))

+ 3 - 3
testing/lisp/test-org-clock.el

@@ -347,13 +347,13 @@ contents.  The clocktable doesn't appear in the buffer."
    (equal
    (equal
     "| Headline     | Time        |     |
     "| Headline     | Time        |     |
 |--------------+-------------+-----|
 |--------------+-------------+-----|
-| *Total time* | *704d 9:01* | foo |
+| *Total time* | *704d 8:01* | foo |
 |--------------+-------------+-----|
 |--------------+-------------+-----|
-| Test         | 704d 9:01   | foo |
+| Test         | 704d 8:01   | foo |
 "
 "
     (org-test-with-temp-text-in-file
     (org-test-with-temp-text-in-file
         "* Test
         "* Test
-CLOCK: [2012-03-29 Thu 16:40]--[2014-03-04 Thu 00:41] => 16905:01
+CLOCK: [2012-03-29 Thu 16:40]--[2014-03-04 Thu 00:41] => 16904:01
 
 
 #+BEGIN: clocktable :scope file-with-archives
 #+BEGIN: clocktable :scope file-with-archives
 #+TBLFM: $3=string(\"foo\")
 #+TBLFM: $3=string(\"foo\")