2

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

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

daterange = [d1, d2]

fmt = '%Y/%m/%d %H:%M:%S'

我目前正在使用strftimefirst 格式化日期:

string = "Date range: {} to {}".format(d1.strftime(fmt), d2.strftime(fmt))

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

有没有更清洁的方法?

4

2 回答 2

6

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

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

在此之后,如果我们将参数的格式设置为format()

"Date range: {0:{2}} to {1:{2}}".format(d1, d2, fmt)

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

"Date range: {0[0]:{1}} to {0[1]:{1}}".format(daterange, fmt)

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

"Date range: {dates[0]:{fmt}} to {dates[1]:{fmt}}".format(dates=daterange, fmt=fmt)
于 2013-02-05T04:30:38.647 回答
0

考虑这个d1.isoformat().replace('T',' ').replace('-','/')[:-7]

isoformat()非常接近您上面的格式。IE。2013-02-04T23:53:45.174635

于 2013-02-05T05:09:16.250 回答