Skip to content
Open
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
7 changes: 4 additions & 3 deletions sc2reader/engine/plugins/gameheart.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from datetime import datetime
from datetime import datetime, timezone
from sc2reader.utils import Length, get_real_type
from sc2reader.objects import Observer, Team
from sc2reader.engine.events import PluginExit
Expand Down Expand Up @@ -65,8 +65,9 @@ def handleInitGame(self, event, replay):
replay.real_length = Length(
seconds=int(replay.game_length.seconds / GAME_SPEED_FACTOR[replay.speed])
)
replay.start_time = datetime.utcfromtimestamp(
replay.unix_timestamp - replay.real_length.seconds
replay.start_time = datetime.fromtimestamp(
replay.unix_timestamp - replay.real_length.seconds,
timezone.utc
)

def fix_events(self, replay, start_frame):
Expand Down
22 changes: 15 additions & 7 deletions sc2reader/resources.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from collections import defaultdict, namedtuple
from datetime import datetime
from datetime import datetime, timezone
import hashlib
from xml.etree import ElementTree
import zlib
Expand Down Expand Up @@ -411,7 +411,10 @@ def load_details(self):

self.windows_timestamp = details["file_time"]
self.unix_timestamp = utils.windows_to_unix(self.windows_timestamp)
self.end_time = datetime.utcfromtimestamp(self.unix_timestamp)
self.end_time = datetime.fromtimestamp(
self.unix_timestamp,
timezone.utc
)

# The utc_adjustment is either the adjusted windows timestamp OR
# the value required to get the adjusted timestamp. We know the upper
Expand All @@ -429,8 +432,9 @@ def load_details(self):
seconds=self.length.seconds
// GAME_SPEED_FACTOR[self.expansion].get(self.speed, 1.0)
)
self.start_time = datetime.utcfromtimestamp(
self.unix_timestamp - self.real_length.seconds
self.start_time = datetime.fromtimestamp(
self.unix_timestamp - self.real_length.seconds,
timezone.utc
)
self.date = self.end_time # backwards compatibility

Expand Down Expand Up @@ -1088,16 +1092,20 @@ def __init__(self, summary_file, filename=None, lang="enUS", **options):
else:
self.expansion = ""

self.end_time = datetime.utcfromtimestamp(self.parts[0][8])
self.end_time = datetime.fromtimestamp(
self.parts[0][8],
timezone.utc
)
self.game_speed = LOBBY_PROPERTIES[0xBB8][1][self.parts[0][0][1].decode("utf8")]
self.game_length = utils.Length(seconds=self.parts[0][7])
self.real_length = utils.Length(
seconds=int(
self.parts[0][7] / GAME_SPEED_FACTOR[self.expansion][self.game_speed]
)
)
self.start_time = datetime.utcfromtimestamp(
self.parts[0][8] - self.real_length.seconds
self.start_time = datetime.fromtimestamp(
self.parts[0][8] - self.real_length.seconds,
timezone.utc
)

self.load_map_info()
Expand Down
7 changes: 4 additions & 3 deletions test_replays/test_replays.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import datetime
from datetime import timezone
import json
from xml.dom import minidom

Expand Down Expand Up @@ -193,15 +194,15 @@ def test_datetimes(self):

# Played at 20 Feb 2011 22:44:48 UTC+2
replay = sc2reader.load_replay("test_replays/1.2.2.17811/1.SC2Replay")
self.assertEqual(replay.end_time, datetime.datetime(2011, 2, 20, 20, 44, 47))
self.assertEqual(replay.end_time, datetime.datetime(2011, 2, 20, 20, 44, 47, tzinfo=timezone.utc))

# Played at 21 Feb 2011 00:42:13 UTC+2
replay = sc2reader.load_replay("test_replays/1.2.2.17811/2.SC2Replay")
self.assertEqual(replay.end_time, datetime.datetime(2011, 2, 20, 22, 42, 12))
self.assertEqual(replay.end_time, datetime.datetime(2011, 2, 20, 22, 42, 12, tzinfo=timezone.utc))

# Played at 25 Feb 2011 16:36:28 UTC+2
replay = sc2reader.load_replay("test_replays/1.2.2.17811/3.SC2Replay")
self.assertEqual(replay.end_time, datetime.datetime(2011, 2, 25, 14, 36, 26))
self.assertEqual(replay.end_time, datetime.datetime(2011, 2, 25, 14, 36, 26, tzinfo=timezone.utc))

def test_hots_pids(self):
for replayfilename in [
Expand Down