Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@ Fixed

In StackStorm v3.0.0, this variable was inadvertently removed from the context used by Mistral
workflows. (bug fix) #4650 #4656
* Fix a bug with ``timestamp`` attribute in the ``execution.log`` attribute being incorrect when
server time where st2api is running was not set to UTC. (bug fix) #4668

Contributed by Igor Cherkaev. (@emptywee)

3.0.0 - April 18, 2019
----------------------
Expand Down
3 changes: 2 additions & 1 deletion st2common/st2common/util/isotime.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
from __future__ import absolute_import
import re
import datetime
from dateutil import tz as tzi

from st2common.util import date as date_utils
import six
Expand Down Expand Up @@ -47,7 +48,7 @@ def format(dt, usec=True, offset=True):
dt = parse(dt)
elif isinstance(dt, int):
# unix epoch
dt = datetime.datetime.fromtimestamp(dt)
dt = datetime.datetime.fromtimestamp(dt, tzi.tzutc())

fmt = ISO8601_FORMAT_MICROSECOND if usec else ISO8601_FORMAT
if offset:
Expand Down
11 changes: 11 additions & 0 deletions st2common/tests/unit/test_isotime_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,13 +67,24 @@ def test_format(self):
dt_str_offset = '2000-01-01T12:00:00+00:00'
dt_str = '2000-01-01T12:00:00Z'
dt_unicode = u'2000-01-01T12:00:00Z'

# datetime object
self.assertEqual(isotime.format(dt, usec=True, offset=True), dt_str_usec_offset)
self.assertEqual(isotime.format(dt, usec=True, offset=False), dt_str_usec)
self.assertEqual(isotime.format(dt, usec=False, offset=True), dt_str_offset)
self.assertEqual(isotime.format(dt, usec=False, offset=False), dt_str)
self.assertEqual(isotime.format(dt_str, usec=False, offset=False), dt_str)
self.assertEqual(isotime.format(dt_unicode, usec=False, offset=False), dt_unicode)

# unix timestamp (epoch)
dt = 1557390483
self.assertEqual(isotime.format(dt, usec=True, offset=True),
'2019-05-09T08:28:03.000000+00:00')
self.assertEqual(isotime.format(dt, usec=False, offset=False),
'2019-05-09T08:28:03Z')
self.assertEqual(isotime.format(dt, usec=False, offset=True),
'2019-05-09T08:28:03+00:00')

def test_format_tz_naive(self):
dt1 = datetime.datetime.utcnow()
dt2 = isotime.parse(isotime.format(dt1, usec=True))
Expand Down