From 371deae98f85f26171b6da6041b6404720c5dcf1 Mon Sep 17 00:00:00 2001 From: Nathan Byrd Date: Fri, 5 Mar 2021 17:23:12 -0600 Subject: [PATCH 1/2] Corrected fidelity of datetime.fromtimestamp() --- adafruit_datetime.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/adafruit_datetime.py b/adafruit_datetime.py index b430f40..7d85b74 100755 --- a/adafruit_datetime.py +++ b/adafruit_datetime.py @@ -1284,16 +1284,18 @@ def _fromtimestamp(cls, t, utc, tz): A timezone info object may be passed in as well. """ if isinstance(t, float): - frac, t = _math.modf(t) + frac = t - int(t) + t = int(t) + us = round(frac * 1e6) + if us >= 1000000: + t += 1 + us -= 1000000 + elif us < 0: + t -= 1 + us += 1000000 else: frac = 0 - us = round(frac * 1e6) - if us >= 1000000: - t += 1 - us -= 1000000 - elif us < 0: - t -= 1 - us += 1000000 + us = 0 if utc: raise NotImplementedError( From d1f502ffd563d1bd43f2ca8ddadd00ee8f923c0a Mon Sep 17 00:00:00 2001 From: Nathan Byrd Date: Wed, 10 Mar 2021 19:26:34 -0600 Subject: [PATCH 2/2] Updated per code review comments --- adafruit_datetime.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/adafruit_datetime.py b/adafruit_datetime.py index 7d85b74..cb4fef9 100755 --- a/adafruit_datetime.py +++ b/adafruit_datetime.py @@ -1284,8 +1284,7 @@ def _fromtimestamp(cls, t, utc, tz): A timezone info object may be passed in as well. """ if isinstance(t, float): - frac = t - int(t) - t = int(t) + frac, t = _math.modf(t) us = round(frac * 1e6) if us >= 1000000: t += 1 @@ -1294,7 +1293,6 @@ def _fromtimestamp(cls, t, utc, tz): t -= 1 us += 1000000 else: - frac = 0 us = 0 if utc: