diff --git a/systemd/journal.py b/systemd/journal.py index 54e54ca..db4701b 100644 --- a/systemd/journal.py +++ b/systemd/journal.py @@ -51,13 +51,13 @@ def _convert_monotonic(m): def _convert_source_monotonic(s): return _datetime.timedelta(microseconds=int(s)) +_LOCAL_TIMEZONE = _datetime.datetime.now().astimezone().tzinfo def _convert_realtime(t): - return _datetime.datetime.fromtimestamp(t / 1000000) - + return _datetime.datetime.fromtimestamp(t / 1000000, _LOCAL_TIMEZONE) def _convert_timestamp(s): - return _datetime.datetime.fromtimestamp(int(s) / 1000000) + return _datetime.datetime.fromtimestamp(int(s) / 1000000, _LOCAL_TIMEZONE) def _convert_trivial(x): diff --git a/systemd/test/test_journal.py b/systemd/test/test_journal.py index 2f3cd3b..e6761ca 100644 --- a/systemd/test/test_journal.py +++ b/systemd/test/test_journal.py @@ -290,6 +290,18 @@ def test_reader_convert_entry(tmpdir): 'x2' : ['YYY', 'YYY'], 'y2' : [b'\200\200', b'\200\201']} +def test_reader_convert_timestamps(tmpdir): + j = journal.Reader(path=tmpdir.strpath) + + val = j._convert_field('_SOURCE_REALTIME_TIMESTAMP', 1641651559324187) + assert val.tzinfo is not None + + val = j._convert_field('__REALTIME_TIMESTAMP', 1641651559324187) + assert val.tzinfo is not None + + val = j._convert_field('COREDUMP_TIMESTAMP', 1641651559324187) + assert val.tzinfo is not None + def test_seek_realtime(tmpdir): j = journal.Reader(path=tmpdir.strpath)