将多个日期时间格式化为字符串

Ale*_*x L 2 python datetime string-formatting

我想使用特定格式格式化具有两个日期时间的字符串.

d1 = datetime.datetime.now()
d2 = datetime.datetime.now() - datetime.timedelta(days=1)

daterange = [d1, d2]

fmt = '%Y/%m/%d %H:%M:%S'
Run Code Online (Sandbox Code Playgroud)

我目前正在使用strftime第一个格式化日期:

string = "Date range: {} to {}".format(d1.strftime(fmt), d2.strftime(fmt))
Run Code Online (Sandbox Code Playgroud)

日期范围:2013/02/05 12:22:12至2013/02/04 12:22:12

有更干净的方式吗?

Ale*_*x L 6

您可以在字符串本身中提供日期格式:

string = "{0:%Y/%m/%d %H:%M:%S}".format(d1)
Run Code Online (Sandbox Code Playgroud)

接下来,如果我们将参数的格式设置为format():

"Date range: {0:{2}} to {1:{2}}".format(d1, d2, fmt)
Run Code Online (Sandbox Code Playgroud)

我们甚至可以通过一个日期范围,并从那里获取所有日期 0[index]

"Date range: {0[0]:{1}} to {0[1]:{1}}".format(daterange, fmt)
Run Code Online (Sandbox Code Playgroud)

我们还可以使用命名字段,以提高可读性:

"Date range: {dates[0]:{fmt}} to {dates[1]:{fmt}}".format(dates=daterange, fmt=fmt)
Run Code Online (Sandbox Code Playgroud)