我想使用特定格式格式化具有两个日期时间的字符串。
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
有更清洁的方式吗?
答案 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