Skip to content

Commit 87f2477

Browse files
committed
Fixes fractional seconds padding.
1 parent 54351c5 commit 87f2477

File tree

2 files changed

+22
-6
lines changed

2 files changed

+22
-6
lines changed

pendulum/formatting/alternative_formatter.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,12 @@ class AlternativeFormatter(Formatter):
7575
's': lambda dt: '{:d}'.format(dt.second),
7676

7777
# Fractional second
78-
'S': lambda dt: '{:1d}'.format(dt.microsecond // 100000),
79-
'SS': lambda dt: '{:2d}'.format(dt.microsecond // 10000),
80-
'SSS': lambda dt: '{:3d}'.format(dt.microsecond // 1000),
81-
'SSSS': lambda dt: '{:4d}'.format(dt.microsecond // 100),
82-
'SSSSS': lambda dt: '{:5d}'.format(dt.microsecond // 10),
83-
'SSSSSS': lambda dt: '{:6d}'.format(dt.microsecond),
78+
'S': lambda dt: '{:01d}'.format(dt.microsecond // 100000),
79+
'SS': lambda dt: '{:02d}'.format(dt.microsecond // 10000),
80+
'SSS': lambda dt: '{:03d}'.format(dt.microsecond // 1000),
81+
'SSSS': lambda dt: '{:04d}'.format(dt.microsecond // 100),
82+
'SSSSS': lambda dt: '{:05d}'.format(dt.microsecond // 10),
83+
'SSSSSS': lambda dt: '{:06d}'.format(dt.microsecond),
8484

8585
# Timestamp
8686
'X': lambda dt: '{:d}'.format(dt.timestamp),

tests/formatting_tests/test_alternative_formatter.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,22 @@ def test_fractional_second(self):
120120
self.assertEqual('12345', f.format(d, 'SSSSS'))
121121
self.assertEqual('123456', f.format(d, 'SSSSSS'))
122122

123+
d = Pendulum(2016, 8, 28, 7, 3, 6, 0)
124+
self.assertEqual('0', f.format(d, 'S'))
125+
self.assertEqual('00', f.format(d, 'SS'))
126+
self.assertEqual('000', f.format(d, 'SSS'))
127+
self.assertEqual('0000', f.format(d, 'SSSS'))
128+
self.assertEqual('00000', f.format(d, 'SSSSS'))
129+
self.assertEqual('000000', f.format(d, 'SSSSSS'))
130+
131+
d = Pendulum(2016, 8, 28, 7, 3, 6, 123)
132+
self.assertEqual('0', f.format(d, 'S'))
133+
self.assertEqual('00', f.format(d, 'SS'))
134+
self.assertEqual('000', f.format(d, 'SSS'))
135+
self.assertEqual('0001', f.format(d, 'SSSS'))
136+
self.assertEqual('00012', f.format(d, 'SSSSS'))
137+
self.assertEqual('000123', f.format(d, 'SSSSSS'))
138+
123139
def test_timezone(self):
124140
f = AlternativeFormatter()
125141
d = Pendulum(2016, 8, 28, 7, 3, 6, 123456, 'Europe/Paris')

0 commit comments

Comments
 (0)