diff options
author | Katsumi Yamaoka <yamaoka@jpl.org> | 2014-04-15 23:37:21 +0000 |
---|---|---|
committer | Katsumi Yamaoka <yamaoka@jpl.org> | 2014-04-15 23:37:21 +0000 |
commit | 07abb6e4c13a7246b74cfc5b77d46495dcfaefd4 (patch) | |
tree | 72f6019108cf9bc1ca6d7b27c80c66b7773bd4c5 /lisp/gnus/gmm-utils.el | |
parent | 005551fe3654f6037f78921388302fb2929c459e (diff) | |
download | emacs-07abb6e4c13a7246b74cfc5b77d46495dcfaefd4.tar.gz emacs-07abb6e4c13a7246b74cfc5b77d46495dcfaefd4.tar.bz2 emacs-07abb6e4c13a7246b74cfc5b77d46495dcfaefd4.zip |
lisp/gnus/message.el (message-insert-formatted-citation-line): Use the original author's time zone to express a date string
Diffstat (limited to 'lisp/gnus/gmm-utils.el')
-rw-r--r-- | lisp/gnus/gmm-utils.el | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/lisp/gnus/gmm-utils.el b/lisp/gnus/gmm-utils.el index 63947e5f486..70ef27a7e90 100644 --- a/lisp/gnus/gmm-utils.el +++ b/lisp/gnus/gmm-utils.el @@ -443,6 +443,38 @@ rather than relying on `lexical-binding'. (put 'gmm-labels 'lisp-indent-function 1) (put 'gmm-labels 'edebug-form-spec '((&rest (sexp sexp &rest form)) &rest form)) +(defun gmm-format-time-string (format-string &optional time tz) + "Use FORMAT-STRING to format the time TIME, or now if omitted. +The optional TZ specifies the time zone in a number of seconds; any +other non-nil value will be treated as 0. Note that both the format +specifiers `%Z' and `%z' will be replaced with a numeric form. " +;; FIXME: is there a smart way to replace %Z with a time zone name? + (if (and (numberp tz) (not (zerop tz))) + (let ((st 0) + (case-fold-search t) + ls nd rest) + (setq time (if time + (copy-sequence time) + (current-time))) + (if (>= (setq ls (- (cadr time) (car (current-time-zone)) (- tz))) 0) + (setcar (cdr time) ls) + (setcar (cdr time) (+ ls 65536)) + (setcar time (1- (car time)))) + (setq tz (format "%s%02d%02d" + (if (>= tz 0) "+" "-") + (/ (abs tz) 3600) + (/ (% (abs tz) 3600) 60))) + (while (string-match "%+z" format-string st) + (if (zerop (% (- (setq nd (match-end 0)) (match-beginning 0)) 2)) + (progn + (push (substring format-string st (- nd 2)) rest) + (push tz rest)) + (push (substring format-string st nd) rest)) + (setq st nd)) + (push (substring format-string st) rest) + (format-time-string (apply 'concat (nreverse rest)) time)) + (format-time-string format-string time tz))) + (provide 'gmm-utils) ;;; gmm-utils.el ends here |