format-time-string
TSUCHIYA Masatoshi
tsuchiya @ pine.kuee.kyoto-u.ac.jp
2001年 10月 11日 (木) 17:25:35 JST
>> On Thu, 11 Oct 2001 16:50:16 +0900
>> 「山」== yamaoka @ jpl.org (Katsumi Yamaoka) said as follows:
山> それから、現在の poe.el にある関数定義では %z に対応していないよう
山> に見えます。
がーん。関数の doc string だけを見て使えるものだと思い込んでました。
土> または、format-time-string() の本体には触らずに、%z のみを自前で処
土> 理する advice を定義するという手も考えられます。
山> 勝手な感想を言わせていただければ、こっちの方が気が楽ですね。:-)
やっぱりそうですよね。
そういうわけで、現在の poe.el にある関数定義を %z に対応するように改良
すると同時に、
土> (or (fboundp 'format-time-string)
山> この部分のために関数の置き換えが行なわれない問題があります。
この問題の対策として defadvice を併用する、という修正案を作ってみまし
た。どうでしょうか?
-------------- next part --------------
--- poe.el 2001/04/29 12:34:03 1.73
+++ poe.el 2001/10/11 08:14:32
@@ -1418,6 +1418,11 @@
((eq cur-char ?Z)
(setq change-case (not change-case))
(downcase (cadr (current-time-zone))))
+ ((eq cur-char ?z)
+ (let ((tz (car (current-time-zone))))
+ (if (< tz 0)
+ (format "-%02d%02d" (/ (- tz) 3600) (/ (% (- tz) 3600) 60))
+ (format "+%02d%02d" (/ tz 3600) (/ (% tz 3600) 60)))))
(t
(concat
"%"
@@ -1458,6 +1463,24 @@
;; for `load-history'.
(setq current-load-list (cons 'format-time-string current-load-list))
(put 'format-time-string 'defun-maybe t))))
+
+;; format-time-string() of Mule2.3/XEmacs21.4 doesn't support `%z'.
+(unless (string-match "\\`[\\-\\+][0-9]+\\'"
+ (format-time-string "%z" (current-time)))
+ (defadvice format-time-string
+ (before support-timezone-in-numeric-form activate compile)
+ "Advice to support the construct `%z'."
+ (if (let ((case-fold-search nil))
+ (string-match "\\(\\(\\`\\|[^%]\\)\\(%%\\)*\\)%z" (ad-get-arg 0)))
+ (ad-set-arg
+ 0
+ (concat
+ (substring (ad-get-arg 0) 0 (match-end 1))
+ (let ((tz (car (current-time-zone))))
+ (if (< tz 0)
+ (format "-%02d%02d" (/ (- tz) 3600) (/ (% (- tz) 3600) 60))
+ (format "+%02d%02d" (/ tz 3600) (/ (% tz 3600) 60))))
+ (substring (ad-get-arg 0) (match-end 0)))))))
;; Emacs 20.1/XEmacs 20.3(?) and later: (split-string STRING &optional PATTERN)
;; Here is a XEmacs version.
-------------- next part --------------
山> ;; 揚げ足取りみたいになってしまってごめんなさい。
いえいえ、早くに問題点が発覚して良かったと思います。
;; それから、ML 宛のつもりで余分なメールを送ってしまい、失礼しました。
--
土屋 雅稔 ( TSUCHIYA Masatoshi )
More information about the APEL-ja
mailing list