Skip to content

Commit c2add99

Browse files
committed
fix timezone convert bug in utils._parse_user_dt
1 parent ea4dc2d commit c2add99

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

tests/test_utils.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515

1616
import unittest
1717

18-
from yfinance.utils import is_valid_period_format, _dts_in_same_interval
18+
from yfinance.utils import is_valid_period_format, _dts_in_same_interval, _parse_user_dt
1919

2020

2121
class TestPandas(unittest.TestCase):
@@ -169,6 +169,19 @@ def test_minute_intervals(self):
169169
dt3 = pd.Timestamp("2024-10-15 10:31:00")
170170
self.assertFalse(_dts_in_same_interval(dt1, dt3, "1min"))
171171

172+
class TestParseUserDateTimeCheck(unittest.TestCase):
173+
def test_exchange_timezone(self):
174+
dt1 = pd.Timestamp("2025-07-30 9:00:00")
175+
dt2 = _parse_user_dt(int(dt1.timestamp()), exchange_tz="US/Eastern")
176+
dt3 = _parse_user_dt(int(dt1.timestamp()), exchange_tz="Asia/Tokyo")
177+
dt4 = _parse_user_dt(int(dt1.timestamp()), exchange_tz="US/Pacific")
178+
dt5 = _parse_user_dt(dt4, exchange_tz="Hongkong")
179+
self.assertEqual(int(dt1.timestamp()), int(dt2.timestamp()))
180+
self.assertEqual(int(dt1.timestamp()), int(dt3.timestamp()))
181+
self.assertEqual(int(dt1.timestamp()), int(dt4.timestamp()))
182+
self.assertEqual(int(dt1.timestamp()), int(dt5.timestamp()))
183+
184+
172185
if __name__ == "__main__":
173186
unittest.main()
174187

yfinance/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ def snake_case_2_camelCase(s):
402402
def _parse_user_dt(dt, exchange_tz):
403403
if isinstance(dt, int):
404404
# Should already be epoch, test with conversion:
405-
dt = _pd.Timestamp(_datetime.datetime.fromtimestamp(dt)).tz_localize("UTC").tz_convert(exchange_tz)
405+
dt = _pd.Timestamp(_datetime.datetime.fromtimestamp(dt, tz=_datetime.timezone.utc)).tz_convert(exchange_tz)
406406
else:
407407
# Convert str/date -> datetime, set tzinfo=exchange, get timestamp:
408408
if isinstance(dt, str):

0 commit comments

Comments
 (0)