summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2017-07-07 18:23:10 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2017-07-07 18:23:10 +0200
commit97a1a498956da2e1961df5a0506df4cbb98fff52 (patch)
tree02f38d17a509bd2ffc25e6fc49a56f1223bc4a83
parentfd6a6b5cb4d904146b1672eb96a8c4ddd63ce20c (diff)
downloadorg-mode-97a1a498956da2e1961df5a0506df4cbb98fff52.tar.gz
Fix failing tests in non-daylight saving time zones
* lisp/org.el (org-time-string-to-time): Remove optional POS and BUFFER arguments. Accept new optional ZONE argument. (org-time-string-to-seconds): Accept optional ZONE argument. (org-check-before-date): (org-check-after-date): (org-check-dates-range): (org-goto-calendar): * lisp/ob-gnuplot.el (org-time-string-to-time): * lisp/org-agenda.el (org-agenda-get-blocks): * lisp/org-clock.el (org-clock-timestamps-change): * lisp/org-list.el (org-time-string-to-seconds): Use UTC for time difference and time comparison. * testing/lisp/test-org-clock.el (org-test-clock-create-clock): Use UTC for time differences.
-rw-r--r--etc/ORG-NEWS5
-rw-r--r--lisp/ob-gnuplot.el2
-rw-r--r--lisp/org-agenda.el22
-rw-r--r--lisp/org-clock.el4
-rw-r--r--lisp/org-list.el2
-rw-r--r--lisp/org.el43
-rw-r--r--testing/lisp/test-org-clock.el5
7 files changed, 52 insertions, 31 deletions
diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 27743c6..8875255 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -23,7 +23,7 @@ Consider setting ~org-duration-units~ instead.
*** ~org-at-timestamp-p~ optional argument accepts different values
-See docustrings for the allowed values. For backward compatibility,
+See docstrings for the allowed values. For backward compatibility,
~(org-at-timestamp-p t)~ is still supported, but should be updated
accordingly.
@@ -85,6 +85,8 @@ list as their first argument.
The optional argument is now a string to extract the repeater from.
See docstring for details.
+*** Change signature for ~org-time-string-to-time~
+See docstring for changes.
** New features
*** New Org duration library
This new library implements tools to read and print time durations in
@@ -392,6 +394,7 @@ suitable as a default value.
*** New entities : ~\dollar~ and ~\USD~
*** ~org-parse-time-string~ accepts a new optional argument
=ZONE= specifies the current time zone.
+*** ~org-time-string-to-seconds~ now accepts an optional =ZONE= argument
*** Support for date style URLs in =org-protocol://open-source=
URLs like =https://cool-blog.com/2017/05/20/cool-post/= are
covered by rewrite rules.
diff --git a/lisp/ob-gnuplot.el b/lisp/ob-gnuplot.el
index 400823b..794a025 100644
--- a/lisp/ob-gnuplot.el
+++ b/lisp/ob-gnuplot.el
@@ -40,7 +40,7 @@
;;; Code:
(require 'ob)
-(declare-function org-time-string-to-time "org" (s &optional buffer pos))
+(declare-function org-time-string-to-time "org" (s &optional zone))
(declare-function org-combine-plists "org" (&rest plists))
(declare-function orgtbl-to-generic "org-table" (table params))
(declare-function gnuplot-mode "ext:gnuplot-mode" ())
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index ddd1b7d..0ddb8ce 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -6264,8 +6264,26 @@ scheduled items with an hour specification like [h]h:mm."
(end-time (match-string 2)))
(setq s1 (match-string 1)
s2 (match-string 2)
- d1 (time-to-days (org-time-string-to-time s1 (current-buffer) pos))
- d2 (time-to-days (org-time-string-to-time s2 (current-buffer) pos)))
+ d1 (time-to-days
+ (condition-case err
+ (org-time-string-to-time s1)
+ (error
+ (error
+ "Bad timestamp %S at %d in buffer %S\nError was: %s"
+ s1
+ pos
+ (current-buffer)
+ (error-message-string err)))))
+ d2 (time-to-days
+ (condition-case err
+ (org-time-string-to-time s2)
+ (error
+ (error
+ "Bad timestamp %S at %d in buffer %S\nError was: %s"
+ s2
+ pos
+ (current-buffer)
+ (error-message-string err))))))
(if (and (> (- d0 d1) -1) (> (- d2 d0) -1))
;; Only allow days between the limits, because the normal
;; date stamps will catch the limits.
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index 7d2aa8d..c39305e 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -1701,8 +1701,8 @@ Optional argument N tells to change by that many units."
(begts (if updatets1 begts1 begts2)))
(setq tdiff
(time-subtract
- (org-time-string-to-time org-last-changed-timestamp)
- (org-time-string-to-time ts)))
+ (org-time-string-to-time org-last-changed-timestamp t)
+ (org-time-string-to-time ts t)))
(save-excursion
(goto-char begts)
(org-timestamp-change
diff --git a/lisp/org-list.el b/lisp/org-list.el
index 471ad59..aca4dfb 100644
--- a/lisp/org-list.el
+++ b/lisp/org-list.el
@@ -149,7 +149,7 @@
(declare-function org-remove-indentation "org" (code &optional n))
(declare-function org-show-subtree "org" ())
(declare-function org-sort-remove-invisible "org" (S))
-(declare-function org-time-string-to-seconds "org" (s))
+(declare-function org-time-string-to-seconds "org" (s &optional zone))
(declare-function org-timer-hms-to-secs "org-timer" (hms))
(declare-function org-timer-item "org-timer" (&optional arg))
(declare-function org-trim "org" (s &optional keep-lead))
diff --git a/lisp/org.el b/lisp/org.el
index e0e3346..e05c86b 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -17439,8 +17439,8 @@ both scheduled and deadline timestamps."
'timestamp)
(org-at-planning-p))
(time-less-p
- (org-time-string-to-time match)
- (org-time-string-to-time d)))))))
+ (org-time-string-to-time match t)
+ (org-time-string-to-time d t)))))))
(message "%d entries before %s"
(org-occur regexp nil callback)
d)))
@@ -17461,8 +17461,8 @@ both scheduled and deadline timestamps."
'timestamp)
(org-at-planning-p))
(not (time-less-p
- (org-time-string-to-time match)
- (org-time-string-to-time d))))))))
+ (org-time-string-to-time match t)
+ (org-time-string-to-time d t))))))))
(message "%d entries after %s"
(org-occur regexp nil callback)
d)))
@@ -17485,11 +17485,11 @@ both scheduled and deadline timestamps."
'timestamp)
(org-at-planning-p))
(not (time-less-p
- (org-time-string-to-time match)
- (org-time-string-to-time start-date)))
+ (org-time-string-to-time match t)
+ (org-time-string-to-time start-date t)))
(time-less-p
- (org-time-string-to-time match)
- (org-time-string-to-time end-date))))))))
+ (org-time-string-to-time match t)
+ (org-time-string-to-time end-date t))))))))
(message "%d entries between %s and %s"
(org-occur regexp nil callback) start-date end-date)))
@@ -17574,19 +17574,19 @@ days in order to avoid rounding problems."
(push m l))
(apply 'format fmt (nreverse l))))
-(defun org-time-string-to-time (s &optional buffer pos)
- "Convert a timestamp string into internal time."
- (condition-case errdata
- (apply 'encode-time (org-parse-time-string s))
- (error (error "Bad timestamp `%s'%s\nError was: %s"
- s (if (not (and buffer pos))
- ""
- (format-message " at %d in buffer `%s'" pos buffer))
- (cdr errdata)))))
+(defun org-time-string-to-time (s &optional zone)
+ "Convert timestamp string S into internal time.
+The optional ZONE is omitted or nil for Emacs local time, t for
+Universal Time, ‘wall’ for system wall clock time, or a string as
+in the TZ environment variable."
+ (apply #'encode-time (org-parse-time-string s nil zone)))
-(defun org-time-string-to-seconds (s)
- "Convert a timestamp string to a number of seconds."
- (float-time (org-time-string-to-time s)))
+(defun org-time-string-to-seconds (s &optional zone)
+ "Convert a timestamp string S into a number of seconds.
+The optional ZONE is omitted or nil for Emacs local time, t for
+Universal Time, ‘wall’ for system wall clock time, or a string as
+in the TZ environment variable."
+ (float-time (org-time-string-to-time s zone)))
(org-define-error 'org-diary-sexp-no-match "Unable to match diary sexp")
@@ -18159,8 +18159,7 @@ A prefix ARG can be used to force the current date."
(when (or (org-at-timestamp-p 'lax)
(org-match-line (concat ".*" org-ts-regexp)))
(let ((d1 (time-to-days (current-time)))
- (d2 (time-to-days
- (org-time-string-to-time (match-string 1)))))
+ (d2 (time-to-days (org-time-string-to-time (match-string 1)))))
(setq diff (- d2 d1))))
(calendar)
(calendar-goto-today)
diff --git a/testing/lisp/test-org-clock.el b/testing/lisp/test-org-clock.el
index c699c96..30a69ea 100644
--- a/testing/lisp/test-org-clock.el
+++ b/testing/lisp/test-org-clock.el
@@ -48,8 +48,9 @@ range. INPUT2 can be omitted if clock hasn't finished yet.
Return the clock line as a string."
(let* ((beg (org-test-clock-create-timestamp input1 t t))
(end (and input2 (org-test-clock-create-timestamp input2 t t)))
- (sec-diff (and input2 (floor (- (org-time-string-to-seconds end)
- (org-time-string-to-seconds beg))))))
+ (sec-diff (and input2
+ (floor (- (org-time-string-to-seconds end t)
+ (org-time-string-to-seconds beg t))))))
(concat org-clock-string " " beg
(when end
(concat "--" end " => "