Skip to content

Commit a6c61d8

Browse files
committed
Add additional tests
1 parent 848b1b0 commit a6c61d8

File tree

2 files changed

+38
-9
lines changed

2 files changed

+38
-9
lines changed

pandas/core/tools/datetimes.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from pandas.core import algorithms
3232
from pandas.compat import PY3, zip
3333

34+
3435
def _guess_datetime_format_for_array(arr, **kwargs):
3536
# Try to guess the format based on the first non-NaN element
3637
non_nan_elements = notna(arr).nonzero()[0]
@@ -362,11 +363,11 @@ def _convert_listlike(arg, box, format, name=None, tz=tz):
362363
tz=tz,
363364
name=name)
364365
else:
365-
stamps = [tslibs.Timestamp(res, tz=tz)
366+
stamps = [tslib.Timestamp(res, tz=tz)
366367
for res in result]
367368
result = np.array(stamps, dtype=object)
368369
else:
369-
stamps = [tslibs.Timestamp(res, tz=tz)
370+
stamps = [tslib.Timestamp(res, tz=tz)
370371
for res, tz in zip(result, tznames)]
371372
result = np.array(stamps, dtype=object)
372373
return result
@@ -381,16 +382,17 @@ def _convert_listlike(arg, box, format, name=None, tz=tz):
381382
tz=tzoffset,
382383
name=name)
383384
else:
384-
stamps = [tslibs.Timestamp(res,
385-
tzinfo=tzoffset)
386-
for res, offset in result]
385+
stamps = [tslib.Timestamp(res,
386+
tzinfo=tzoffset)
387+
for res, offset in
388+
zip(result, tzoffsets)]
387389
result = np.array(stamps, dtype=object)
388390
else:
389391
stamps = []
390392
for res, offset in zip(result, tzoffsets):
391393
offset_mins = offset.total_seconds() / 60
392394
tzoffset = pytz.FixedOffset(offset_mins)
393-
ts = tslibs.Timestamp(res, tzinfo=tzoffset)
395+
ts = tslib.Timestamp(res, tzinfo=tzoffset)
394396
stamps.append(ts)
395397
result = np.array(stamps, dtype=object)
396398
return result

pandas/tests/indexes/datetimes/test_tools.py

+30-3
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,9 @@ def test_to_datetime_format_weeks(self, cache):
184184
for s, format, dt in data:
185185
assert to_datetime(s, format=format, cache=cache) == dt
186186

187-
@pytest.skipif(not PY3, reason="datetime.timezone not supported in PY2")
187+
@pytest.mark.skipif(not PY3,
188+
reason="datetime.timezone not supported in PY2")
189+
@pytest.mark.xfail(reason="GH #20257")
188190
def test_to_datetime_parse_timezone(self):
189191
from datetime import timezone
190192
# %Z parsing only
@@ -195,6 +197,17 @@ def test_to_datetime_parse_timezone(self):
195197
expected = pd.DatetimeIndex(expected_dates)
196198
tm.assert_index_equal(result, expected)
197199

200+
result = pd.to_datetime(dates, format=fmt, box=False)
201+
expected = np.array(expected_dates, dtype=object)
202+
tm.assert_numpy_array_equal(result, expected)
203+
204+
dates = ['2010-01-01 12:00:00 UTC', '2010-01-01 12:00:00 GMT']
205+
result = pd.to_datetime(dates, format=fmt)
206+
expected_dates = [pd.Timestamp('2010-01-01 12:00:00', tz='UTC'),
207+
pd.Timestamp('2010-01-01 12:00:00', tz='GMT')]
208+
expected = np.array(expected_dates, dtype=object)
209+
tm.assert_numpy_array_equal(result, expected)
210+
198211
# %z parsing only
199212
dates = ['2010-01-01 12:00:00 +0100'] * 2
200213
fmt = '%Y-%m-%d %H:%M:%S %z'
@@ -204,17 +217,31 @@ def test_to_datetime_parse_timezone(self):
204217
expected = pd.DatetimeIndex(expected_dates)
205218
tm.assert_index_equal(result, expected)
206219

220+
result = pd.to_datetime(dates, format=fmt, box=False)
221+
expected = np.array(expected_dates, dtype=object)
222+
tm.assert_numpy_array_equal(result, expected)
223+
224+
dates = ['2010-01-01 12:00:00 +0100', '2010-01-01 12:00:00 -0100']
225+
result = pd.to_datetime(dates, format=fmt)
226+
expected_dates = [pd.Timestamp('2010-01-01 12:00:00',
227+
tzinfo=pytz.FixedOffset(60)),
228+
pd.Timestamp('2010-01-01 12:00:00',
229+
tzinfo=pytz.FixedOffset(-60))]
230+
expected = np.array(expected_dates, dtype=object)
231+
tm.assert_numpy_array_equal(result, expected)
232+
207233
# %z and %Z parsing
208234
dates = ['2010-01-01 12:00:00 UTC +0100'] * 2
209235
fmt = '%Y-%m-%d %H:%M:%S %Z %z'
210236
result = pd.to_datetime(dates, format=fmt)
211237
tzinfo = timezone(timedelta(minutes=60), 'UTC')
212-
expected_dates = [pd.Timestamp('2010-01-01 12:00:00', tzinfo=tzinfo)]
238+
expected_dates = [pd.Timestamp('2010-01-01 13:00:00', tzinfo=tzinfo)]
213239
expected = np.array(expected_dates * 2, dtype=object)
214240
tm.assert_numpy_array_equal(result, expected)
215241

216242
with pytest.raises(ValueError):
217-
pd.to_datetime(dates, format=fmt, tz='US/Pacific')
243+
pd.to_datetime(dates, format=fmt, utc=True)
244+
218245

219246
class TestToDatetime(object):
220247
def test_to_datetime_pydatetime(self):

0 commit comments

Comments
 (0)