combine()参数1必须是datetime.date,而不是str - 当显示时间时 - Django

时间:2015-02-23 04:28:17

标签: python django datetime django-views

当我尝试使用此代码时:

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

它给了我这个错误:

  

“combine()参数1必须是datetime.date,而不是str”。

修改

我认为我的错误就在这里:

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

我不确定我做错了什么。我该怎么办?

2 个答案:

答案 0 :(得分:1)

date var的类型不是date/datetime个实例,而是string

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

我猜您正在尝试将其与datetime.datetime.combine

一起使用
>>> datetime.datetime.combine(date, datetime.time(10, 23))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: combine() argument 1 must be datetime.date, not str

虽然你应该使用date/datetime对象。

>>> datetime.datetime.combine(datetime.datetime.now(), datetime.time(10, 23))
datetime.datetime(2015, 2, 23, 10, 23)

答案 1 :(得分:0)

date = datetime.datetime.now().strftime('%I:%M')
naive_start = datetime.datetime.combine(date, datetime.time.min)
     

我应该采取哪些不同的方式?

“combine()参数1必须是datetime.date,而不是str”。错误消息表明你应该调用.strftime()方法来转换{ {1}}将对象转换为字符串,将其删除:

datetime

其中import datetime date = datetime.datetime.now() naive_start = datetime.datetime.combine(date, datetime.time.min) 包含当地时间的一天(午夜)的开头,作为一个天真的naive_start对象。

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