[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>{created!d}</code></td>
|
||||||
<td><code>2010-01-01 00:00:00</code></td>
|
<td><code>2010-01-01 00:00:00</code></td>
|
||||||
</tr>
|
</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>
|
<tr>
|
||||||
<td align="center"><code>U</code></td>
|
<td align="center"><code>U</code></td>
|
||||||
<td>Convert HTML entities</td>
|
<td>Convert HTML entities</td>
|
||||||
|
|||||||
@@ -488,6 +488,7 @@ _CONVERSIONS = {
|
|||||||
"L": len,
|
"L": len,
|
||||||
"T": util.datetime_to_timestamp_string,
|
"T": util.datetime_to_timestamp_string,
|
||||||
"d": text.parse_timestamp,
|
"d": text.parse_timestamp,
|
||||||
|
"D": util.to_datetime,
|
||||||
"U": text.unescape,
|
"U": text.unescape,
|
||||||
"H": lambda s: text.unescape(text.remove_html(s)),
|
"H": lambda s: text.unescape(text.remove_html(s)),
|
||||||
"g": text.slugify,
|
"g": text.slugify,
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ class TestFormatter(unittest.TestCase):
|
|||||||
"h": "<p>foo </p> & bar <p> </p>",
|
"h": "<p>foo </p> & bar <p> </p>",
|
||||||
"u": "'< / >'",
|
"u": "'< / >'",
|
||||||
"t": 1262304000,
|
"t": 1262304000,
|
||||||
"ds": "2010-01-01T01:00:00+0100",
|
"ds": "2010-01-01T01:00:00+01:00",
|
||||||
"dt": datetime.datetime(2010, 1, 1),
|
"dt": datetime.datetime(2010, 1, 1),
|
||||||
"dt_dst": datetime.datetime(2010, 6, 1),
|
"dt_dst": datetime.datetime(2010, 6, 1),
|
||||||
"i_str": "12345",
|
"i_str": "12345",
|
||||||
@@ -65,6 +65,13 @@ class TestFormatter(unittest.TestCase):
|
|||||||
self._run_test("{n!S}", "")
|
self._run_test("{n!S}", "")
|
||||||
self._run_test("{t!d}", datetime.datetime(2010, 1, 1))
|
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:%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("{dt!T}", "1262304000")
|
||||||
self._run_test("{l!j}", '["a","b","c"]')
|
self._run_test("{l!j}", '["a","b","c"]')
|
||||||
self._run_test("{dt!j}", '"2010-01-01 00:00:00"')
|
self._run_test("{dt!j}", '"2010-01-01 00:00:00"')
|
||||||
@@ -232,7 +239,7 @@ class TestFormatter(unittest.TestCase):
|
|||||||
|
|
||||||
def test_datetime(self):
|
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-%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")
|
self._run_test("{l:D%Y}", "None")
|
||||||
|
|
||||||
def test_offset(self):
|
def test_offset(self):
|
||||||
@@ -488,10 +495,10 @@ def noarg():
|
|||||||
fmt4 = formatter.parse("\fM " + path + ":lengths")
|
fmt4 = formatter.parse("\fM " + path + ":lengths")
|
||||||
|
|
||||||
self.assertEqual(fmt1.format_map(self.kwdict), "'Title' by Name")
|
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(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):
|
with self.assertRaises(TypeError):
|
||||||
self.assertEqual(fmt0.format_map(self.kwdict), "")
|
self.assertEqual(fmt0.format_map(self.kwdict), "")
|
||||||
|
|||||||
Reference in New Issue
Block a user