summaryrefslogtreecommitdiff
path: root/lisp/time.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/time.el')
-rw-r--r--lisp/time.el52
1 files changed, 48 insertions, 4 deletions
diff --git a/lisp/time.el b/lisp/time.el
index 4d94fb7aeb3..ef98c6a7819 100644
--- a/lisp/time.el
+++ b/lisp/time.el
@@ -112,17 +112,61 @@ A value of nil means 1 <= hh <= 12, and an AM/PM suffix is used."
"Time when mail file's file system was recorded to be down.
If that file system seems to be up, the value is nil.")
-(defcustom display-time-world-list
+(defcustom zoneinfo-style-world-list
'(("America/Los_Angeles" "Seattle")
("America/New_York" "New York")
("Europe/London" "London")
("Europe/Paris" "Paris")
("Asia/Calcutta" "Bangalore")
("Asia/Tokyo" "Tokyo"))
- "Alist specifying time zones and places for `display-time-world'.
+ "Alist of zoneinfo-style time zones and places for `display-time-world'.
+Each element has the form (TIMEZONE LABEL).
+TIMEZONE should be a string of the form AREA/LOCATION, where AREA is
+the name of a region -- a continent or ocean, and LOCATION is the name
+of a specific location, e.g., a city, within that region.
+LABEL is a string to display as the label of that TIMEZONE's time."
+ :group 'display-time
+ :type '(repeat (list string string))
+ :version "23.1")
+
+(defcustom legacy-style-world-list
+ '(("PST8PDT" "Seattle")
+ ("EST5EDT" "New York")
+ ("GMT0BST" "London")
+ ("CET-1CDT" "Paris")
+ ("IST-5:30" "Bangalore")
+ ("JST-9" "Tokyo"))
+ "Alist of traditional-style time zones and places for `display-time-world'.
+Each element has the form (TIMEZONE LABEL).
+TIMEZONE should be a string of the form:
+
+ std[+|-]offset[dst[offset][,date[/time],date[/time]]]
+
+See the documentation of the TZ environment variable on your system,
+for more details about the format of TIMEZONE.
+LABEL is a string to display as the label of that TIMEZONE's time."
+ :group 'display-time
+ :type '(repeat (list string string))
+ :version "23.1")
+
+(defcustom display-time-world-list
+ ;; Determine if zoneinfo style timezones are supported by testing that
+ ;; America/New York and Europe/London return different timezones.
+ (let (gmt nyt)
+ (set-time-zone-rule "America/New York")
+ (setq nyt (format-time-string "%z"))
+ (set-time-zone-rule "Europe/London")
+ (setq gmt (format-time-string "%z"))
+ (set-time-zone-rule nil)
+ (if (string-equal nyt gmt)
+ legacy-style-world-list
+ zoneinfo-style-world-list))
+ "Alist of time zones and places for `display-time-world' to display.
Each element has the form (TIMEZONE LABEL).
-TIMEZONE should be a valid argument for `set-time-zone-rule'.
-LABEL is a string to display to label that zone's time."
+TIMEZONE should be in the format supported by `set-time-zone-rule' on
+your system. See the documentation of `zoneinfo-style-world-list' and
+\`legacy-style-world-list' for two widely used formats.
+LABEL is a string to display as the label of that TIMEZONE's time."
:group 'display-time
:type '(repeat (list string string))
:version "23.1")