combining datetime.datetime with datetime.time - TypeError: an integer is required
combining datetime.datetime with datetime.time - TypeError: an integer is required
我目前正在尝试遍历 SQL 请求游标中包含的一些数据,将某些数据的类型更改为 "datetime.time",然后将其与另一个变量组合成一个新变量名为 "datetime_db".
我有两个名为 "date" 和 "nextDay" 的变量,它们之前已在我的代码中定义过。前面提到的 "datetime.time" 将根据特定条件与 "date" 或 "nextDay" 组合。
我的代码如下:
for (date_db,time_db,price) in cursor:
time_db = datetime.datetime.strptime(time_db,"%H:%M:%S").time()
price = float(price)
if (date_db == date):
datetime_db = datetime.datetime.combine(datetime.date(date), datetime.time(time_db))
else:
datetime_db = datetime.datetime.combine(datetime.date(nextDay), datetime.time(time_db))
这会引发以下错误:
File "C:/Users/Stuart/PycharmProjects/untitled/Apache - Copy.py", line 82, in <module>
datetime_db = datetime.datetime.combine(datetime.date(date), datetime.time(time_db))
TypeError: an integer is required
当我打印出涉及的 3 个变量的 "type()" 时,我得到以下信息:
time_db = <type 'datetime.time'> date = <type 'datetime.datetime'> nextDay = <type 'datetime.datetime'>
这不起作用有什么明显的原因吗?我尝试将 "date" 和 "nextDay" 的类型更改为 "datetime.date" 但这没有区别。
有人可以建议我如何成功组合这两个变量吗?
您不能通过构造函数将 datetime
转换为 date
:
>>> datetime.date(datetime.datetime.now())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required
datetime.time
构造函数也是如此;它不会接受另一个 time
对象作为参数。
现在,您需要 date
和 time
才能使用 datetime.combine
; time_db
已经是 class time
的一个实例,但是你的 date
(对于这个解释来说不幸的名字)是类型 datetime
。那么,date
的 date
部分可以用 datetime.date
方法提取:
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2015, 2, 20, 22, 21, 22, 806109)
>>> dt.date()
datetime.date(2015, 2, 20)
因此你可以这样做:
datetime.datetime.combine(date.date(), time_db)
datetime_db = datetime.datetime.combine(date.date(), time_db.timetz())
这假设 date
和 time_db
都是 datetime
对象,它们看起来是。
我目前正在尝试遍历 SQL 请求游标中包含的一些数据,将某些数据的类型更改为 "datetime.time",然后将其与另一个变量组合成一个新变量名为 "datetime_db".
我有两个名为 "date" 和 "nextDay" 的变量,它们之前已在我的代码中定义过。前面提到的 "datetime.time" 将根据特定条件与 "date" 或 "nextDay" 组合。
我的代码如下:
for (date_db,time_db,price) in cursor:
time_db = datetime.datetime.strptime(time_db,"%H:%M:%S").time()
price = float(price)
if (date_db == date):
datetime_db = datetime.datetime.combine(datetime.date(date), datetime.time(time_db))
else:
datetime_db = datetime.datetime.combine(datetime.date(nextDay), datetime.time(time_db))
这会引发以下错误:
File "C:/Users/Stuart/PycharmProjects/untitled/Apache - Copy.py", line 82, in <module>
datetime_db = datetime.datetime.combine(datetime.date(date), datetime.time(time_db))
TypeError: an integer is required
当我打印出涉及的 3 个变量的 "type()" 时,我得到以下信息:
time_db = <type 'datetime.time'> date = <type 'datetime.datetime'> nextDay = <type 'datetime.datetime'>
这不起作用有什么明显的原因吗?我尝试将 "date" 和 "nextDay" 的类型更改为 "datetime.date" 但这没有区别。
有人可以建议我如何成功组合这两个变量吗?
您不能通过构造函数将 datetime
转换为 date
:
>>> datetime.date(datetime.datetime.now())
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: an integer is required
datetime.time
构造函数也是如此;它不会接受另一个 time
对象作为参数。
现在,您需要 date
和 time
才能使用 datetime.combine
; time_db
已经是 class time
的一个实例,但是你的 date
(对于这个解释来说不幸的名字)是类型 datetime
。那么,date
的 date
部分可以用 datetime.date
方法提取:
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2015, 2, 20, 22, 21, 22, 806109)
>>> dt.date()
datetime.date(2015, 2, 20)
因此你可以这样做:
datetime.datetime.combine(date.date(), time_db)
datetime_db = datetime.datetime.combine(date.date(), time_db.timetz())
这假设 date
和 time_db
都是 datetime
对象,它们看起来是。