2015-02-23 23 views
1

当我尝试使用此代码:结合()参数1必须是datetime.date,不STR - 显示当时间 - Django的

date = datetime.datetime.now().strftime('%I:%M') 

它给我这个错误:

"combine() argument 1 must be datetime.date, not str".

编辑:

我觉得我的错误是在这里:

naive_start = datetime.datetime.combine(date, datetime.time.min) 

我不知道我在做什么错。我应该做什么不同?

+0

此代码是正确的。该错误必须在其他行中。给更多的上下文。 – catavaran 2015-02-23 04:34:02

+1

'.strftime('%I:%M')'会返回字符串。请检查你通过'日期'变量的位置。如果可能,请给予全面追溯。 – Nilesh 2015-02-23 04:35:28

+0

我只是在python 2.7和3.4中运行它,它工作正常。不知道你的错在哪里:s – vishen 2015-02-23 04:51:22

回答

1

您的date var的类型不是date/datetime实例其a a string

>>> import datetime 
>>> date = datetime.datetime.now().strftime('%I:%M') 
>>> type(date) 
<type 'str'> 

,我想你想与datetime.datetime.combine

使用它,而你应该使用date/datetime对象。

>>> datetime.datetime.combine(datetime.datetime.now(), datetime.time(10, 23)) 
datetime.datetime(2015, 2, 23, 10, 23) 
0
date = datetime.datetime.now().strftime('%I:%M') 
naive_start = datetime.datetime.combine(date, datetime.time.min) 

What should I do differently?

“结合()参数1必须datetime.date,不STR”。错误信息显示您应该呼叫.strftime()方法datetime对象转换为字符串,删除它:

import datetime 

date = datetime.datetime.now() 
naive_start = datetime.datetime.combine(date, datetime.time.min) 

其中naive_start包含在当地时间当天午夜开始作为一个天真datetime对象。

顺便说一句,如果代码在您的django应用程序的服务器上运行,那么本地(服务器)时区可能不会对您可能位于不同时区(来自服务器和对方)的客户端非常有用。 Configure timezones

相关问题