[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
`format-time-string', TZ and environement variables
From: |
Lars Magne Ingebrigtsen |
Subject: |
`format-time-string', TZ and environement variables |
Date: |
Fri, 24 Feb 2012 20:24:38 -0800 |
User-agent: |
Gnus/5.130004 (Ma Gnus v0.4) Emacs/24.0.93 (gnu/linux) |
I needed to format a time string in the time zone it was originally
written in (after making it more valid).
(setq time (parse-time-string "16 Oct 92 13:48:29 PST"))
=> (29 48 13 16 10 1992 nil (-28800) -28800)
(Hm. That's slightly buggy. The DST should field is documented to be
either t or nil, so that `(-28800)' thing looks weird...)
Anyway, the original date string is kinda invalid because of the Y2K
problem, so I thought I'd just parse it and then recreate the string,
which turned out to be difficult and undocumented.
(apply 'encode-time time)
=> (10975 14509)
(format-time-string "%a, %d %b %Y %T %z" (apply 'encode-time time))
=> "Fri, 16 Oct 1992 22:48:29 +0100"
Er, nope.
(setenv "TZ" (format "GMT%d" (- (/ (or (car (last time)) 0)
60 60))))
=> "GMT8"
(format-time-string "%a, %d %b %Y %T %z" (apply 'encode-time time))
=> "Fri, 16 Oct 1992 13:48:29 -0800"
I think. Or something.
`format-time-string' allows either formatting in the local time zone, or
using UT. I think either it should be extended to allow formatting in
any time zone, or the "TZ" trick should be documented. If the latter,
we should probably have a nice macro for the environment variables, too:
(with-environment-variable ("TZ" "GMT8")
(format-time-string "%a, %d %b %Y %T %z" (apply 'encode-time time)))
Because using `setenv' directly is kinda yucky.
This is not for Emacs 24.1, obviously...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog http://lars.ingebrigtsen.no/
- `format-time-string', TZ and environement variables,
Lars Magne Ingebrigtsen <=