@@ -1273,52 +1273,57 @@ def _parsed_string_to_bounds(self, reso, parsed):
1273
1273
lower, upper: pd.Timestamp
1274
1274
1275
1275
"""
1276
+ if parsed .tzinfo is None :
1277
+ target_tz = self .tz
1278
+ else :
1279
+ target_tz = parsed .tzinfo
1280
+
1276
1281
if reso == 'year' :
1277
- return (Timestamp (datetime (parsed .year , 1 , 1 ), tz = self . tz ),
1282
+ return (Timestamp (datetime (parsed .year , 1 , 1 ), tz = target_tz ),
1278
1283
Timestamp (datetime (parsed .year , 12 , 31 , 23 ,
1279
- 59 , 59 , 999999 ), tz = self . tz ))
1284
+ 59 , 59 , 999999 ), tz = target_tz ))
1280
1285
elif reso == 'month' :
1281
1286
d = libts .monthrange (parsed .year , parsed .month )[1 ]
1282
1287
return (Timestamp (datetime (parsed .year , parsed .month , 1 ),
1283
- tz = self . tz ),
1288
+ tz = target_tz ),
1284
1289
Timestamp (datetime (parsed .year , parsed .month , d , 23 ,
1285
- 59 , 59 , 999999 ), tz = self . tz ))
1290
+ 59 , 59 , 999999 ), target_tz ))
1286
1291
elif reso == 'quarter' :
1287
1292
qe = (((parsed .month - 1 ) + 2 ) % 12 ) + 1 # two months ahead
1288
1293
d = libts .monthrange (parsed .year , qe )[1 ] # at end of month
1289
1294
return (Timestamp (datetime (parsed .year , parsed .month , 1 ),
1290
- tz = self . tz ),
1295
+ tz = target_tz ),
1291
1296
Timestamp (datetime (parsed .year , qe , d , 23 , 59 ,
1292
- 59 , 999999 ), tz = self . tz ))
1297
+ 59 , 999999 ), tz = target_tz ))
1293
1298
elif reso == 'day' :
1294
1299
st = datetime (parsed .year , parsed .month , parsed .day )
1295
- return (Timestamp (st , tz = self . tz ),
1300
+ return (Timestamp (st , tz = target_tz ),
1296
1301
Timestamp (Timestamp (st + offsets .Day (),
1297
- tz = self . tz ).value - 1 ))
1302
+ tz = target_tz ).value - 1 ))
1298
1303
elif reso == 'hour' :
1299
1304
st = datetime (parsed .year , parsed .month , parsed .day ,
1300
1305
hour = parsed .hour )
1301
- return (Timestamp (st , tz = self . tz ),
1306
+ return (Timestamp (st , tz = target_tz ),
1302
1307
Timestamp (Timestamp (st + offsets .Hour (),
1303
- tz = self . tz ).value - 1 ))
1308
+ tz = target_tz ).value - 1 ))
1304
1309
elif reso == 'minute' :
1305
1310
st = datetime (parsed .year , parsed .month , parsed .day ,
1306
1311
hour = parsed .hour , minute = parsed .minute )
1307
- return (Timestamp (st , tz = self . tz ),
1312
+ return (Timestamp (st , tz = target_tz ),
1308
1313
Timestamp (Timestamp (st + offsets .Minute (),
1309
- tz = self . tz ).value - 1 ))
1314
+ tz = target_tz ).value - 1 ))
1310
1315
elif reso == 'second' :
1311
1316
st = datetime (parsed .year , parsed .month , parsed .day ,
1312
1317
hour = parsed .hour , minute = parsed .minute ,
1313
1318
second = parsed .second )
1314
- return (Timestamp (st , tz = self . tz ),
1319
+ return (Timestamp (st , tz = target_tz ),
1315
1320
Timestamp (Timestamp (st + offsets .Second (),
1316
- tz = self . tz ).value - 1 ))
1321
+ tz = target_tz ).value - 1 ))
1317
1322
elif reso == 'microsecond' :
1318
1323
st = datetime (parsed .year , parsed .month , parsed .day ,
1319
1324
parsed .hour , parsed .minute , parsed .second ,
1320
1325
parsed .microsecond )
1321
- return (Timestamp (st , tz = self . tz ), Timestamp (st , tz = self . tz ))
1326
+ return (Timestamp (st , tz = target_tz ), Timestamp (st , tz = target_tz ))
1322
1327
else :
1323
1328
raise KeyError
1324
1329
0 commit comments