changeset 131:669a9b3a24ad

Implement wall-time time-zone display.
author cmlenz
date Mon, 18 Jun 2007 17:31:59 +0000
parents 383b18bfcc95
children aba61e4bdecf
files babel/dates.py babel/tests/dates.py
diffstat 2 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/babel/dates.py
+++ b/babel/dates.py
@@ -510,12 +510,12 @@
         return get_period_names(locale=self.locale)[period]
 
     def format_timezone(self, char, num):
-        if char == 'z':
+        if char in ('z', 'v'):
             if hasattr(self.value.tzinfo, 'zone'):
                 zone = self.value.tzinfo.zone
             else:
                 zone = self.value.tzinfo.tzname(self.value)
-            
+
             # Get the canonical time-zone code
             zone = self.locale.zone_aliases.get(zone, zone)
 
@@ -524,7 +524,10 @@
             if display:
                 if 'long' in display:
                     width = {3: 'short', 4: 'long'}[max(3, num)]
-                    dst = self.value.dst() and 'daylight' or 'standard'
+                    if char == 'v':
+                        dst = 'generic'
+                    else:
+                        dst = self.value.dst() and 'daylight' or 'standard'
                     return display[width][dst]
                 elif 'city' in display:
                     return display['city']
@@ -539,8 +542,6 @@
             pattern = {3: '%+03d%02d', 4: 'GMT %+03d:%02d'}[max(3, num)]
             return pattern % (hours, seconds // 60)
 
-        elif char == 'v':
-            raise NotImplementedError
 
     def format(self, value, length):
         return ('%%0%dd' % length) % value
--- a/babel/tests/dates.py
+++ b/babel/tests/dates.py
@@ -68,6 +68,17 @@
         fmt = dates.DateTimeFormat(t, locale='de_DE')
         self.assertEqual('GMT +01:00', fmt['ZZZZ'])
 
+    def test_timezone_walltime_short(self):
+        tz = timezone('Europe/Paris')
+        t = time(15, 30, tzinfo=tz)
+        fmt = dates.DateTimeFormat(t, locale='en_US')
+        self.assertEqual('CET', fmt['v'])
+
+    def test_timezone_walltime_long(self):
+        tz = timezone('Europe/Paris')
+        t = time(15, 30, tzinfo=tz)
+        fmt = dates.DateTimeFormat(t, locale='en_US')
+        self.assertEqual('Central European Time', fmt['vvvv'])
 
 
 class FormatDateTestCase(unittest.TestCase):
Copyright (C) 2012-2017 Edgewall Software