【发布时间】:2019-10-16 08:42:59
【问题描述】:
我尝试将英文日期 (2019-10-07) 转换为法文日期 (07/10/2016)
我试试
dat = '07/10/2019'
dat = time.strftime('%Y-%m-%d')
但得到的结果是“2019-10-16”而不是“2019-10-07”
【问题讨论】:
-
因为 16 日是今天的日期,而您没有在第二行中转换上述日期
我尝试将英文日期 (2019-10-07) 转换为法文日期 (07/10/2016)
我试试
dat = '07/10/2019'
dat = time.strftime('%Y-%m-%d')
但得到的结果是“2019-10-16”而不是“2019-10-07”
【问题讨论】:
使用datetime,您可以决定提供源日期的格式以及您想要的目标格式。
from datetime import datetime
dat = '07/10/2019'
datetime.strptime(dat, "%d/%m/%Y").strftime("%Y-%m-%d")
out[6]: '2019-10-07'
【讨论】:
strftime 需要一个时间/日期来转换,如果您不提供,它将使用 当前 日期和时间。 dat 的先前值不相关 - strftime 看不到此信息。
您需要提供strftime 将格式化的时间信息,作为一个元组,您可以通过解析原始字符串获得。为此,请使用strptime(f 表示格式,p 表示解析)。
所以:
dmy = '07/10/2019'
ymd = time.strftime('%Y-%m-%d', time.strptime(dmy, '%d/%m/%Y'))
# ^^^^^^^^ ^^^^^^^^
# output schema input schema
# now ymd is '2019-10-07'
(或者您可以像在另一个答案中一样使用datetime 模块。这样,解析会为您提供一个对象,该对象有一个 method 来格式化 - 这样您就可以编写整个操作“按顺序”就行了。但大体原理是一样的:先解析,再格式化,每边都需要指定schema。)
【讨论】:
与:
dat = time.strftime('%Y-%m-%d')
你恢复了你的实际日期。
你需要做:
from datetime import datetime
dat = '07/10/2019'
dat = datetime.strptime(dat, '%m/%d/%Y')
print(dat.strftime('%Y-%m-%d') )
【讨论】: