@@ -359,7 +359,9 @@ def _convert_listlike(arg, box, format, name=None, tz=tz):
359359 return DatetimeIndex (arg , tz = tz , name = name )
360360 except ValueError :
361361 pass
362-
362+ from pandas import Series
363+ if isinstance (arg , Series ) and utc :
364+ arg = arg .dt .tz_localize ('utc' )
363365 return arg
364366
365367 elif unit is not None :
@@ -379,11 +381,12 @@ def _convert_listlike(arg, box, format, name=None, tz=tz):
379381 raise TypeError ('arg must be a string, datetime, list, tuple, '
380382 '1-d array, or Series' )
381383
382- arg = _ensure_object (arg )
384+ obj_arg = _ensure_object (arg )
383385 require_iso8601 = False
384386
385387 if infer_datetime_format and format is None :
386- format = _guess_datetime_format_for_array (arg , dayfirst = dayfirst )
388+ format = _guess_datetime_format_for_array (obj_arg ,
389+ dayfirst = dayfirst )
387390
388391 if format is not None :
389392 # There is a special fast-path for iso8601 formatted
@@ -402,46 +405,50 @@ def _convert_listlike(arg, box, format, name=None, tz=tz):
402405 # shortcut formatting here
403406 if format == '%Y%m%d' :
404407 try :
405- result = _attempt_YYYYMMDD (arg , errors = errors )
408+ result = _attempt_YYYYMMDD (obj_arg , errors = errors )
406409 except :
407410 raise ValueError ("cannot convert the input to "
408411 "'%Y%m%d' date format" )
409412
410413 # fallback
411414 if result is None :
412415 try :
413- result = tslib .array_strptime (arg , format , exact = exact ,
416+ result = tslib .array_strptime (obj_arg , format ,
417+ exact = exact ,
414418 errors = errors )
415419 except tslib .OutOfBoundsDatetime :
416420 if errors == 'raise' :
417421 raise
418- result = arg
422+ result = obj_arg
419423 except ValueError :
420424 # if format was inferred, try falling back
421425 # to array_to_datetime - terminate here
422426 # for specified formats
423427 if not infer_datetime_format :
424428 if errors == 'raise' :
425429 raise
426- result = arg
430+ result = obj_arg
427431
428432 if result is None and (format is None or infer_datetime_format ):
429433 result = tslib .array_to_datetime (
430- arg ,
434+ obj_arg ,
431435 errors = errors ,
432436 utc = utc ,
433437 dayfirst = dayfirst ,
434438 yearfirst = yearfirst ,
435439 require_iso8601 = require_iso8601
436440 )
437-
441+ from pandas import Series
438442 if is_datetime64_dtype (result ) and box :
439443 result = DatetimeIndex (result , tz = tz , name = name )
444+ # GH 6415
445+ elif isinstance (arg , Series ) and utc :
446+ result = Series (result , name = name ).dt .tz_localize ('utc' )
440447 return result
441448
442449 except ValueError as e :
443450 try :
444- values , tz = tslib .datetime_to_datetime64 (arg )
451+ values , tz = tslib .datetime_to_datetime64 (obj_arg )
445452 return DatetimeIndex ._simple_new (values , name = name , tz = tz )
446453 except (ValueError , TypeError ):
447454 raise e
@@ -506,7 +513,7 @@ def _convert_listlike(arg, box, format, name=None, tz=tz):
506513 result = arg
507514 elif isinstance (arg , ABCSeries ):
508515 from pandas import Series
509- values = _convert_listlike (arg . _values , False , format )
516+ values = _convert_listlike (arg , False , format , name = arg . name )
510517 result = Series (values , index = arg .index , name = arg .name )
511518 elif isinstance (arg , (ABCDataFrame , MutableMapping )):
512519 result = _assemble_from_unit_mappings (arg , errors = errors )
0 commit comments