]> git.ipfire.org Git - thirdparty/babel.git/commitdiff
format_time() and format_datetime() now accept also floats (#242)
authorFelix Schwarz <felix.schwarz@oss.schwarz.eu>
Thu, 9 Aug 2012 11:44:40 +0000 (11:44 +0000)
committerFelix Schwarz <felix.schwarz@oss.schwarz.eu>
Thu, 9 Aug 2012 11:44:40 +0000 (11:44 +0000)
ChangeLog
babel/dates.py
babel/tests/dates.py

index 9fd2e8c06c8bcb4db13dd08bc577a96bdbc035de..f6b8a78e65636570b7abb296900b64a09e2b9a51 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -51,6 +51,7 @@ http://svn.edgewall.org/repos/babel/tags/1.0.0/
    attributes (language, territory, script, variant) are equal
  * resort to hard-coded message extractors/checkers if pkg_resources is 
    installed but no egg-info was found (#230)
+ * format_time() and format_datetime() now accept also floats (#242)
 
 
 Version 0.9.6
index aa021b1aff2f85c518e7a5c1c52b7de9b3b012a1..9c008bc903bbffd3857c675d26b70a4951fa6360 100644 (file)
@@ -488,7 +488,7 @@ def format_datetime(datetime=None, format='medium', tzinfo=None,
     """
     if datetime is None:
         datetime = datetime_.utcnow()
-    elif isinstance(datetime, (int, long)):
+    elif isinstance(datetime, (int, long, float)):
         datetime = datetime_.utcfromtimestamp(datetime)
     elif isinstance(datetime, time):
         datetime = datetime_.combine(date.today(), datetime)
@@ -572,7 +572,7 @@ def format_time(time=None, format='medium', tzinfo=None, locale=LC_TIME):
     """
     if time is None:
         time = datetime.utcnow()
-    elif isinstance(time, (int, long)):
+    elif isinstance(time, (int, long, float)):
         time = datetime.utcfromtimestamp(time)
     if time.tzinfo is None:
         time = time.replace(tzinfo=UTC)
index fa45a860f5b5f3559a50df369c452c463443c03a..457a17f025437878243a6c3ac096200c43c2957a 100644 (file)
@@ -11,6 +11,7 @@
 # individuals. For the exact contribution history, see the revision
 # history and logs, available at http://babel.edgewall.org/log/.
 
+import calendar
 from datetime import date, datetime, time, timedelta
 import doctest
 import new
@@ -241,6 +242,16 @@ class FormatDateTestCase(unittest.TestCase):
         self.assertEqual('14', dates.format_date(d, 'w', locale='en_US'))
 
 
+class FormatDatetimeTestCase(unittest.TestCase):
+
+    def test_with_float(self):
+        d = datetime(2012, 4, 1, 15, 30, 29, tzinfo=timezone('UTC'))
+        epoch = float(calendar.timegm(d.timetuple()))
+        formatted_string = dates.format_datetime(epoch, format='long', locale='en_US')
+        self.assertEqual(u'April 1, 2012 3:30:29 PM +0000', formatted_string)
+                         
+
+
 class FormatTimeTestCase(unittest.TestCase):
 
     def test_with_naive_datetime_and_tzinfo(self):
@@ -249,6 +260,13 @@ class FormatTimeTestCase(unittest.TestCase):
                                    locale='en')
         self.assertEqual('11:30:00 AM EDT', string)
 
+    def test_with_float(self):
+        d = datetime(2012, 4, 1, 15, 30, 29, tzinfo=timezone('UTC'))
+        epoch = float(calendar.timegm(d.timetuple()))
+        formatted_time = dates.format_time(epoch, format='long', locale='en_US')
+        self.assertEqual(u'3:30:29 PM +0000', formatted_time)
+                    
+
     def test_with_date_fields_in_pattern(self):
         self.assertRaises(AttributeError, dates.format_time, date(2007, 04, 01),
                           "yyyy-MM-dd HH:mm", locale='en_US')
@@ -297,6 +315,7 @@ def suite():
     suite.addTest(doctest.DocTestSuite(dates))
     suite.addTest(unittest.makeSuite(DateTimeFormatTestCase))
     suite.addTest(unittest.makeSuite(FormatDateTestCase))
+    suite.addTest(unittest.makeSuite(FormatDatetimeTestCase))
     suite.addTest(unittest.makeSuite(FormatTimeTestCase))
     suite.addTest(unittest.makeSuite(FormatTimedeltaTestCase))
     suite.addTest(unittest.makeSuite(TimeZoneAdjustTestCase))