将字符串转换为不带时间的日期对象
我想把一个字符串转换成Python的日期对象。我使用了 d = datetime.strptime("25-01-1973", "%d-%m-%Y")
,这个方法在官方文档上有说明,结果是 datetime.datetime(1973, 1, 25, 0, 0)
。
当我用 d.isoformat()
时,得到的结果是 '1973-01-25T00:00:00'
,但我想要的是 1973-01-25
(不带时间信息),这在文档中也有提到:
date.isoformat()
Return a string representing the date in ISO 8601 format, ‘YYYY-MM-DD’. For example, date(2002, 12, 4).isoformat() == '2002-12-04'.
我知道可以使用SimpleDateFormat等方法,但因为文档中明确提到了 isoformat()
的例子,所以我不明白为什么在日期后面还会有不需要的时间信息。
我想我可能漏掉了什么细节?
1 个回答
27
通过 datetime.datetime.strptime
得到的对象是一个 datetime.datetime
对象,而不是 datetime.date
对象。这意味着它包含了时间的信息,当你调用 isoformat()
时,这些时间信息也会被包含在内。
你可以使用 datetime.datetime.date()
方法将其转换为 date
对象,方法如下。
import datetime as dt
d = dt.datetime.strptime("25-01-1973", "%d-%m-%Y")
# Convert datetime object to date object.
d = d.date()
print(d.isoformat())
# 1973-01-25