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

时间:2013-02-05 04:30:39

标签: 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'

我目前首先使用strftime格式化日期:

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

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

有更清洁的方式吗?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

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

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