[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")
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] scratch/iso8601 3769ea2: Add some commentary,
Lars Ingebrigtsen <=