@@ -15,7 +15,7 @@ from util cimport (is_integer_object, is_float_object, is_string_object,
15
15
from cpython.datetime cimport (PyDateTime_Check, PyDate_Check,
16
16
PyDateTime_CheckExact,
17
17
PyDateTime_IMPORT,
18
- timedelta, datetime, date)
18
+ timedelta, datetime, date, time )
19
19
# import datetime C API
20
20
PyDateTime_IMPORT
21
21
@@ -70,11 +70,17 @@ cdef inline object create_date_from_ts(
70
70
""" convenience routine to construct a datetime.date from its parts """
71
71
return date(dts.year, dts.month, dts.day)
72
72
73
+ cdef inline object create_time_from_ts(
74
+ int64_t value, pandas_datetimestruct dts,
75
+ object tz, object freq):
76
+ """ convenience routine to construct a datetime.time from its parts """
77
+ return time(dts.hour, dts.min, dts.sec, dts.us, tz)
78
+
73
79
74
80
def ints_to_pydatetime (ndarray[int64_t] arr , tz = None , freq = None ,
75
81
box = " datetime" ):
76
82
"""
77
- Convert an i8 repr to an ndarray of datetimes, date or Timestamp
83
+ Convert an i8 repr to an ndarray of datetimes, date, time or Timestamp
78
84
79
85
Parameters
80
86
----------
@@ -83,19 +89,17 @@ def ints_to_pydatetime(ndarray[int64_t] arr, tz=None, freq=None,
83
89
convert to this timezone
84
90
freq : str/Offset, default None
85
91
freq to convert
86
- box : {'datetime', 'timestamp', 'date'}, default 'datetime'
92
+ box : {'datetime', 'timestamp', 'date', 'time' }, default 'datetime'
87
93
If datetime, convert to datetime.datetime
88
94
If date, convert to datetime.date
95
+ If time, convert to datetime.time
89
96
If Timestamp, convert to pandas.Timestamp
90
97
91
98
Returns
92
99
-------
93
100
result : array of dtype specified by box
94
101
"""
95
102
96
- assert ((box == " datetime" ) or (box == " date" ) or (box == " timestamp" )), \
97
- " box must be one of 'datetime', 'date' or 'timestamp'"
98
-
99
103
cdef:
100
104
Py_ssize_t i, n = len (arr)
101
105
ndarray[int64_t] trans, deltas
@@ -115,8 +119,13 @@ def ints_to_pydatetime(ndarray[int64_t] arr, tz=None, freq=None,
115
119
if is_string_object(freq):
116
120
from pandas.tseries.frequencies import to_offset
117
121
freq = to_offset(freq)
122
+ elif box == " time" :
123
+ func_create = create_time_from_ts
118
124
elif box == " datetime" :
119
125
func_create = create_datetime_from_ts
126
+ else :
127
+ raise ValueError (" box must be one of 'datetime', 'date', 'time' or" +
128
+ " 'timestamp'" )
120
129
121
130
if tz is not None :
122
131
if is_utc(tz):
0 commit comments