* poe.el (format-time-string): Support the 3rd arg `universal'.
authoryamaoka <yamaoka>
Mon, 15 Oct 2001 02:08:40 +0000 (02:08 +0000)
committeryamaoka <yamaoka>
Mon, 15 Oct 2001 02:08:40 +0000 (02:08 +0000)
ChangeLog
poe.el

index 6fdd94f..eb7f1ce 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,7 +1,9 @@
 2001-10-15  Katsumi Yamaoka  <yamaoka@jpl.org>
 
-       * poe.el (support-timezone-in-numeric-form-and-3rd-arg): Renamed
-       from `support-timezone-in-numeric-form'; add support the 3rd arg.
+       * poe.el (format-time-string): Support the 3rd arg `universal'.
+       (support-timezone-in-numeric-form-and-3rd-arg): Renamed from
+       `support-timezone-in-numeric-form';
+       support the 3rd arg `universal'.
 
 2001-10-12  TSUCHIYA Masatoshi  <tsuchiya@pine.kuee.kyoto-u.ac.jp>
 
diff --git a/poe.el b/poe.el
index 8d25dfd..ff06f83 100644 (file)
--- a/poe.el
+++ b/poe.el
@@ -267,7 +267,7 @@ HIST, if non-nil, specifies a history list
 DEF, if non-nil, is the default value.
 
 Completion ignores case if the ambient value of
-  `completion-ignore-case' is non-nil."  
+  `completion-ignore-case' is non-nil."
        (let ((string (si:completing-read prompt table predicate
                                          require-match init hist)))
          (if (and (string= string "") def)
@@ -1250,9 +1250,24 @@ Not fully compatible especially when invalid format is specified."
          field-result
          pad-left change-case
          (paren-level 0)
-         hour
-         (time-string (current-time-string time)))
-      (setq hour (string-to-int (substring time-string 11 13)))
+         hour ms ls
+         (tz (car (current-time-zone)))
+         time-string)
+      (if universal
+         (progn
+           (or time
+               (setq time (current-time)))
+           (setq ms (car time)
+                 ls (- (nth 1 time) tz))
+           (cond ((< ls 0)
+                  (setq ms (1- ms)
+                        ls (+ ls 65536)))
+                 ((>= ls 65536)
+                  (setq ms (1+ ms)
+                        ls (- ls 65536))))
+           (setq time (append (list ms ls) (nth 2 time)))))
+      (setq time-string (current-time-string time)
+           hour (string-to-int (substring time-string 11 13)))
       (while (< ind fmt-len)
        (setq cur-char (aref format ind))
        (setq
@@ -1301,7 +1316,7 @@ Not fully compatible especially when invalid format is specified."
                (cond
                 ((eq cur-char ?%)
                  "%")
-                ;; the abbreviated name of the day of week.             
+                ;; the abbreviated name of the day of week.
                 ((eq cur-char ?a)
                  (substring time-string 0 3))
                 ;; the full name of the day of week
@@ -1322,7 +1337,7 @@ Not fully compatible especially when invalid format is specified."
                 ((eq cur-char ?C)
                  "")
                 ;; the day of month, zero-padded
-                ((eq cur-char ?d)      
+                ((eq cur-char ?d)
                  (format "%02d" (string-to-int (substring time-string 8 10))))
                 ;; a synonym for `%m/%d/%y'
                 ((eq cur-char ?D)
@@ -1390,7 +1405,7 @@ Not fully compatible especially when invalid format is specified."
                          (substring time-string 11 13)
                          (substring time-string 14 16)
                          (substring time-string 17 19)))
-                ;; the week of the year (01-52), assuming that weeks 
+                ;; the week of the year (01-52), assuming that weeks
                 ;; start on Sunday (yet to come)
                 ((eq cur-char ?U)
                  "")
@@ -1416,13 +1431,18 @@ Not fully compatible especially when invalid format is specified."
                  (substring time-string -4))
                 ;; the time zone abbreviation
                 ((eq cur-char ?Z)
-                 (setq change-case (not change-case))
-                 (downcase (cadr (current-time-zone))))
+                 (if universal
+                     "UTC"
+                   (setq change-case (not change-case))
+                   (downcase (cadr (current-time-zone)))))
                 ((eq cur-char ?z)
-                 (let ((tz (car (current-time-zone))))
+                 (if universal
+                     "+0000"
                    (if (< tz 0)
-                       (format "-%02d%02d" (/ (- tz) 3600) (/ (% (- tz) 3600) 60))
-                     (format "+%02d%02d" (/ tz 3600) (/ (% tz 3600) 60)))))
+                       (format "-%02d%02d"
+                               (/ (- tz) 3600) (/ (% (- tz) 3600) 60))
+                     (format "+%02d%02d"
+                             (/ tz 3600) (/ (% tz 3600) 60)))))
                 (t
                  (concat
                   "%"