TypeError:strptime()参数1必须是str,而不是datetime.date Python

时间:2018-03-26 06:26:27

标签: python datetime

将日期转换为字符串时遇到问题,

print(type(from_date))
from_date = datetime.datetime.strptime(from_date, '%Y-%m-%d').date()

我的from_date值位于ini文件中,

from_date = 2018-01-01

我的TraceBack日志是,

Traceback (most recent call last):
File "Flexi_DailyToWeekly.py", line 87, in <module>
tuesday = get_data(session,from_keyspace, from_table, to_keyspace, to_table_tuesday, to_table_wednesday, to_table_thursday, to_table_friday, from_date, to_date)
File "Flexi_DailyToWeekly.py", line 11, in get_data
from_date = datetime.datetime.strptime(from_date, '%Y-%m-%d')
TypeError: strptime() argument 1 must be str, not datetime.date'

我使用了type(from_date),它将from_date作为字符串返回。

也尝试了,

from_date = datetime.datetime.strptime(str(from_date), '%Y-%m-%d').date()

仍然存在相同的错误。

根据以下答案中的建议更改了from_date,

from_date = "2018-01-01"

错误持续存在,

Traceback (most recent call last):
File "Flexi_DailyToWeekly.py", line 82, in <module>
from_date = datetime.datetime.strptime(from_date, '%Y-%m-%d').date()
File "/usr/lib/python3.5/_strptime.py", line 510, in _strptime_datetime
tt, fraction = _strptime(data_string, format)
File "/usr/lib/python3.5/_strptime.py", line 343, in _strptime
(data_string, format))
ValueError: time data '"2018-01-01"' does not match format '%Y-%m-%d'

2 个答案:

答案 0 :(得分:0)

替换

from_date = 2018-01-01

from_date : 2018-01-01
ini文件中的

使用代码进行测试:

import configparser
import datetime
config = configparser.ConfigParser()
config.read('Test.ini')
print (config['DEFAULT']['date'])
from_date = config['DEFAULT']['date']
print(type(from_date))
from_date = datetime.datetime.strptime(from_date, '%Y-%m-%d').date()
print (from_date)

和Test.ini是

[DEFAULT]
date : 2018-1-1

输出是:

2018-1-1
<class 'str'>
2018-01-01

答案 1 :(得分:0)

根据docsdatetime.strptime()方法接受date_string作为第一个参数。所以,我试过这个:

import datetime
test = datetime.datetime.strptime('2018-01-01', '%Y-%m-%d').date()
print(test)
#datetime.date(2018, 1, 1)

如果我执行from_date = 2018-01-01,则invalid token的{​​{1}}会出现type错误:

from_date

这意味着 from_date = 2018-01-01 print(type(from_date)) File "<ipython-input-7-9e5449277912>", line 2 from_date = 2018-01-01 ^ SyntaxError: invalid token 必须是一个字符串。您可以使用from_date,这样可行。如果我现在检查from_date = '2018-01-01'的类型,我会得到一种类from_date

string

但是当我查看第一个 Traceback 日志时,它会引发from_date = '2018-01-01' print(type(from_date)) #<class 'str'> 。这意味着TypeError中存储的值的类型为from_date。请考虑以下事项:

datetime.date