[formatter] add 'D' conversion
This commit is contained in:
@@ -140,6 +140,12 @@ Conversion specifiers allow to *convert* the value to a different form or type.
|
||||
<td><code>{created!d}</code></td>
|
||||
<td><code>2010-01-01 00:00:00</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><code>D</code></td>
|
||||
<td>Convert a Unix timestamp or <a href="https://en.wikipedia.org/wiki/ISO_8601">ISO 8601</a> string to a <code>datetime</code> object</td>
|
||||
<td><code>{created!D}</code></td>
|
||||
<td><code>2010-01-01 00:00:00</code></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center"><code>U</code></td>
|
||||
<td>Convert HTML entities</td>
|
||||
|
||||
@@ -488,6 +488,7 @@ _CONVERSIONS = {
|
||||
"L": len,
|
||||
"T": util.datetime_to_timestamp_string,
|
||||
"d": text.parse_timestamp,
|
||||
"D": util.to_datetime,
|
||||
"U": text.unescape,
|
||||
"H": lambda s: text.unescape(text.remove_html(s)),
|
||||
"g": text.slugify,
|
||||
|
||||
@@ -32,7 +32,7 @@ class TestFormatter(unittest.TestCase):
|
||||
"h": "<p>foo </p> & bar <p> </p>",
|
||||
"u": "'< / >'",
|
||||
"t": 1262304000,
|
||||
"ds": "2010-01-01T01:00:00+0100",
|
||||
"ds": "2010-01-01T01:00:00+01:00",
|
||||
"dt": datetime.datetime(2010, 1, 1),
|
||||
"dt_dst": datetime.datetime(2010, 6, 1),
|
||||
"i_str": "12345",
|
||||
@@ -65,6 +65,13 @@ class TestFormatter(unittest.TestCase):
|
||||
self._run_test("{n!S}", "")
|
||||
self._run_test("{t!d}", datetime.datetime(2010, 1, 1))
|
||||
self._run_test("{t!d:%Y-%m-%d}", "2010-01-01")
|
||||
self._run_test("{t!D}" , datetime.datetime(2010, 1, 1))
|
||||
if sys.hexversion >= 0x3070000:
|
||||
self._run_test("{ds!D}", datetime.datetime(2010, 1, 1))
|
||||
else:
|
||||
self._run_test("{ds!D}", datetime.datetime(1970, 1, 1))
|
||||
self._run_test("{dt!D}", datetime.datetime(2010, 1, 1))
|
||||
self._run_test("{t!D:%Y-%m-%d}", "2010-01-01")
|
||||
self._run_test("{dt!T}", "1262304000")
|
||||
self._run_test("{l!j}", '["a","b","c"]')
|
||||
self._run_test("{dt!j}", '"2010-01-01 00:00:00"')
|
||||
@@ -232,7 +239,7 @@ class TestFormatter(unittest.TestCase):
|
||||
|
||||
def test_datetime(self):
|
||||
self._run_test("{ds:D%Y-%m-%dT%H:%M:%S%z}", "2010-01-01 00:00:00")
|
||||
self._run_test("{ds:D%Y}", "2010-01-01T01:00:00+0100")
|
||||
self._run_test("{ds:D%Y}", "2010-01-01T01:00:00+01:00")
|
||||
self._run_test("{l:D%Y}", "None")
|
||||
|
||||
def test_offset(self):
|
||||
@@ -488,10 +495,10 @@ def noarg():
|
||||
fmt4 = formatter.parse("\fM " + path + ":lengths")
|
||||
|
||||
self.assertEqual(fmt1.format_map(self.kwdict), "'Title' by Name")
|
||||
self.assertEqual(fmt2.format_map(self.kwdict), "136")
|
||||
self.assertEqual(fmt2.format_map(self.kwdict), "137")
|
||||
|
||||
self.assertEqual(fmt3.format_map(self.kwdict), "'Title' by Name")
|
||||
self.assertEqual(fmt4.format_map(self.kwdict), "136")
|
||||
self.assertEqual(fmt4.format_map(self.kwdict), "137")
|
||||
|
||||
with self.assertRaises(TypeError):
|
||||
self.assertEqual(fmt0.format_map(self.kwdict), "")
|
||||
|
||||
Reference in New Issue
Block a user