Mercurial > babel > old > mirror
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):