summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2018-05-23 22:26:54 +0200
committerIlya Etingof <etingof@gmail.com>2018-05-23 22:31:10 +0200
commit2cfdcffb666c1b8756aa4d345ef4cac608286c45 (patch)
tree75c9e57fee76114f7b419f79ea564928a0a17c10
parent844285b0021e00e341db3a31d3cb58a98d192d65 (diff)
downloadpyasn1-git-2cfdcffb666c1b8756aa4d345ef4cac608286c45.tar.gz
fix GenerlizedTime.asDateTime() operation
-rw-r--r--CHANGES.rst4
-rw-r--r--pyasn1/type/useful.py4
-rw-r--r--tests/type/test_useful.py12
3 files changed, 11 insertions, 9 deletions
diff --git a/CHANGES.rst b/CHANGES.rst
index 4dddd82..f6a72b4 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -1,8 +1,10 @@
-Revision 0.4.3, released XX-XX-2018
+Revision 0.4.3, released XX-05-2018
-----------------------------------
- Copyright notice extended to the year 2018
+- Fixed GeneralizedTime.asDateTime to perform milliseconds conversion
+ correctly
Revision 0.4.2, released 23-11-2017
-----------------------------------
diff --git a/pyasn1/type/useful.py b/pyasn1/type/useful.py
index 145713f..146916d 100644
--- a/pyasn1/type/useful.py
+++ b/pyasn1/type/useful.py
@@ -104,7 +104,7 @@ class TimeMixIn(object):
text, _, ms = string.partition(text, ',')
try:
- ms = int(ms) * 10000
+ ms = int(ms) * 1000
except ValueError:
raise error.PyAsn1Error('bad sub-second time specification %s' % self)
@@ -142,7 +142,7 @@ class TimeMixIn(object):
"""
text = dt.strftime(cls._yearsDigits == 4 and '%Y%m%d%H%M%S' or '%y%m%d%H%M%S')
if cls._hasSubsecond:
- text += '.%d' % (dt.microsecond // 10000)
+ text += '.%d' % (dt.microsecond // 1000)
if dt.utcoffset():
seconds = dt.utcoffset().seconds
diff --git a/tests/type/test_useful.py b/tests/type/test_useful.py
index 8137de3..c1d7832 100644
--- a/tests/type/test_useful.py
+++ b/tests/type/test_useful.py
@@ -46,7 +46,7 @@ class ObjectDescriptorTestCase(BaseTestCase):
class GeneralizedTimeTestCase(BaseTestCase):
def testFromDateTime(self):
- assert useful.GeneralizedTime.fromDateTime(datetime.datetime(2017, 7, 11, 0, 1, 2, 30000, tzinfo=UTC)) == '20170711000102.3Z'
+ assert useful.GeneralizedTime.fromDateTime(datetime.datetime(2017, 7, 11, 0, 1, 2, 3000, tzinfo=UTC)) == '20170711000102.3Z'
def testToDateTime0(self):
assert datetime.datetime(2017, 7, 11, 0, 1, 2) == useful.GeneralizedTime('20170711000102').asDateTime
@@ -55,19 +55,19 @@ class GeneralizedTimeTestCase(BaseTestCase):
assert datetime.datetime(2017, 7, 11, 0, 1, 2, tzinfo=UTC) == useful.GeneralizedTime('20170711000102Z').asDateTime
def testToDateTime2(self):
- assert datetime.datetime(2017, 7, 11, 0, 1, 2, 30000, tzinfo=UTC) == useful.GeneralizedTime('20170711000102.3Z').asDateTime
+ assert datetime.datetime(2017, 7, 11, 0, 1, 2, 3000, tzinfo=UTC) == useful.GeneralizedTime('20170711000102.3Z').asDateTime
def testToDateTime3(self):
- assert datetime.datetime(2017, 7, 11, 0, 1, 2, 30000, tzinfo=UTC) == useful.GeneralizedTime('20170711000102,3Z').asDateTime
+ assert datetime.datetime(2017, 7, 11, 0, 1, 2, 3000, tzinfo=UTC) == useful.GeneralizedTime('20170711000102,3Z').asDateTime
def testToDateTime4(self):
- assert datetime.datetime(2017, 7, 11, 0, 1, 2, 30000, tzinfo=UTC) == useful.GeneralizedTime('20170711000102.3+0000').asDateTime
+ assert datetime.datetime(2017, 7, 11, 0, 1, 2, 3000, tzinfo=UTC) == useful.GeneralizedTime('20170711000102.3+0000').asDateTime
def testToDateTime5(self):
- assert datetime.datetime(2017, 7, 11, 0, 1, 2, 30000, tzinfo=UTC2) == useful.GeneralizedTime('20170711000102.3+0200').asDateTime
+ assert datetime.datetime(2017, 7, 11, 0, 1, 2, 3000, tzinfo=UTC2) == useful.GeneralizedTime('20170711000102.3+0200').asDateTime
def testToDateTime6(self):
- assert datetime.datetime(2017, 7, 11, 0, 1, 2, 30000, tzinfo=UTC2) == useful.GeneralizedTime('20170711000102.3+02').asDateTime
+ assert datetime.datetime(2017, 7, 11, 0, 1, 2, 3000, tzinfo=UTC2) == useful.GeneralizedTime('20170711000102.3+02').asDateTime
def testToDateTime7(self):
assert datetime.datetime(2017, 7, 11, 0, 1) == useful.GeneralizedTime('201707110001').asDateTime