emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] scratch/iso8601 3769ea2: Add some commentary


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] scratch/iso8601 3769ea2: Add some commentary
Date: Mon, 29 Jul 2019 07:07:15 -0400 (EDT)

branch: scratch/iso8601
commit 3769ea22eb274c2cf69f5c96971d7489dc6e6686
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>

    Add some commentary
---
 lisp/calendar/iso8601.el            | 31 ++++++++++++++++++++++++++-----
 test/lisp/calendar/iso8601-tests.el | 16 ++++++++--------
 2 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/lisp/calendar/iso8601.el b/lisp/calendar/iso8601.el
index f44ed38..ab0077a 100644
--- a/lisp/calendar/iso8601.el
+++ b/lisp/calendar/iso8601.el
@@ -21,13 +21,33 @@
 
 ;;; Commentary:
 
-;; For a publicly available version of the standards document, see:
-
+;; ISO8601 times basically look like 1985-04-01T15:23:49...  Or so
+;; you'd think.  This is what everybody means when they say "ISO8601",
+;; but it's in reality a quite large collection of syntaxes, including
+;; week numbers, ordinal dates, durations and intervals.  This package
+;; has functions for parsing them all.
+;;
+;; The interface functions are `iso8601-parse', `iso8601-parse-date',
+;; `iso8601-parse-time', `iso8601-parse-zone',
+;; `iso8601-parse-duration' and `iso8601-parse-interval'.  They all
+;; return decoded time objects, except the last one, which returns a
+;; list of three of them.
+;;
+;; (iso8601-parse-interval "P1Y2M10DT2H30M/2008W32T153000-01")
+;; '((0 0 13 24 5 2007 nil nil -3600)
+;;   (0 30 15 3 8 2008 nil nil -3600)
+;;   (0 30 2 10 2 1 nil nil nil))
+;;
+;;
+;; The standard can be found at:
+;;
 ;; 
http://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf
-
+;;
 ;; The Wikipedia page on the standard is also informative:
-
+;;
 ;; https://en.wikipedia.org/wiki/ISO_8601
+;;
+;; RFC3339 defines the subset that everybody thinks of as "ISO8601".
 
 ;;; Code:
 
@@ -217,7 +237,8 @@ well as variants like \"2008W32\" (week number) and
                                  :minute (or minute 0)
                                  :second (or second 0)
                                  :zone (and zone
-                                            (iso8601-parse-zone zone))))))))
+                                            (* 60 (iso8601-parse-zone
+                                                   zone)))))))))
 
 (defun iso8601-parse-zone (string)
   "Parse STRING, which should be an ISO 8601 time zone.
diff --git a/test/lisp/calendar/iso8601-tests.el 
b/test/lisp/calendar/iso8601-tests.el
index 7b1dbfd..2959f54 100644
--- a/test/lisp/calendar/iso8601-tests.el
+++ b/test/lisp/calendar/iso8601-tests.el
@@ -189,24 +189,24 @@
 
 (ert-deftest standard-test-time-of-day-zone ()
   (should (equal (iso8601-parse-time "152746+0100")
-                 '(46 27 15 nil nil nil nil nil 60)))
+                 '(46 27 15 nil nil nil nil nil 3600)))
   (should (equal (iso8601-parse-time "15:27:46+0100")
-                 '(46 27 15 nil nil nil nil nil 60)))
+                 '(46 27 15 nil nil nil nil nil 3600)))
 
   (should (equal (iso8601-parse-time "152746+01")
-                 '(46 27 15 nil nil nil nil nil 60)))
+                 '(46 27 15 nil nil nil nil nil 3600)))
   (should (equal (iso8601-parse-time "15:27:46+01")
-                 '(46 27 15 nil nil nil nil nil 60)))
+                 '(46 27 15 nil nil nil nil nil 3600)))
 
   (should (equal (iso8601-parse-time "152746-0500")
-                 '(46 27 15 nil nil nil nil nil -300)))
+                 '(46 27 15 nil nil nil nil nil -18000)))
   (should (equal (iso8601-parse-time "15:27:46-0500")
-                 '(46 27 15 nil nil nil nil nil -300)))
+                 '(46 27 15 nil nil nil nil nil -18000)))
 
   (should (equal (iso8601-parse-time "152746-05")
-                 '(46 27 15 nil nil nil nil nil -300)))
+                 '(46 27 15 nil nil nil nil nil -18000)))
   (should (equal (iso8601-parse-time "15:27:46-05")
-                 '(46 27 15 nil nil nil nil nil -300))))
+                 '(46 27 15 nil nil nil nil nil -18000))))
 
 (ert-deftest standard-test-date-and-time-of-day ()
   (should (equal (iso8601-parse "19850412T101530")



reply via email to

[Prev in Thread] Current Thread [Next in Thread]