From d864ce08ff43a2d86ac6123459bb9fa32b924657 Mon Sep 17 00:00:00 2001 From: Alexander Graf <17130992+aandergr@users.noreply.github.com> Date: Fri, 7 Jan 2022 14:49:27 +0100 Subject: [PATCH] Make {Post,StoryItem}.date_utc timezone aware Also simplify {Post,StoryItem}.date_local. Discussed in #1316. --- instaloader/structures.py | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/instaloader/structures.py b/instaloader/structures.py index 5851a5d..d749370 100644 --- a/instaloader/structures.py +++ b/instaloader/structures.py @@ -3,7 +3,7 @@ import lzma import re from base64 import b64decode, b64encode from collections import namedtuple -from datetime import datetime, timezone, timedelta +from datetime import datetime, timezone from pathlib import Path from typing import Any, Dict, Iterable, Iterator, List, Optional, Tuple, Union @@ -225,18 +225,12 @@ class Post: @property def date_local(self) -> datetime: """Timestamp when the post was created (local time zone).""" - def get_timedelta(timestamp) -> timedelta: - """Timedelta for a given date""" - return datetime.fromtimestamp(timestamp) - datetime.utcfromtimestamp(timestamp) - - timestamp_date = self.get_timestamp_date_created() - tzinfo = timezone(get_timedelta(timestamp_date)) - return datetime.fromtimestamp(timestamp_date, tzinfo) + return datetime.fromtimestamp(self.get_timestamp_date_created()).astimezone() @property def date_utc(self) -> datetime: """Timestamp when the post was created (UTC).""" - return datetime.utcfromtimestamp(self.get_timestamp_date_created()) + return datetime.utcfromtimestamp(self.get_timestamp_date_created()).replace(tzinfo=timezone.utc) @property def date(self) -> datetime: @@ -1087,17 +1081,12 @@ class StoryItem: @property def date_local(self) -> datetime: """Timestamp when the StoryItem was created (local time zone).""" - def get_timedelta(timestamp) -> timedelta: - """Timedelta for a given date""" - return datetime.fromtimestamp(timestamp) - datetime.utcfromtimestamp(timestamp) - - tzinfo = timezone(get_timedelta(self._node['taken_at_timestamp'])) - return datetime.fromtimestamp(self._node['taken_at_timestamp'], tzinfo) + return datetime.fromtimestamp(self._node['taken_at_timestamp']).astimezone() @property def date_utc(self) -> datetime: """Timestamp when the StoryItem was created (UTC).""" - return datetime.utcfromtimestamp(self._node['taken_at_timestamp']) + return datetime.utcfromtimestamp(self._node['taken_at_timestamp']).replace(tzinfo=timezone.utc) @property def date(self) -> datetime: