在新样式格式中修剪DateTime对象

时间:2017-08-08 04:04:15

标签: python python-3.x string-formatting

我试图使用新的格式(" PyFormat")并打印一般变量,它可能是字符串,浮点数,布尔值或DateTime对象。 对于直接格式化似乎很好:

import datetime
"{0}".format(datetime.datetime.now())

但是,当尝试混合截断{0:.300}时,它会失败:

import datetime
"{0:.300}".format(datetime.datetime.now())  # returns '.300'

它似乎适用于字符串,浮点数和几乎任何对象。但它没有DateTime obejcts。

我该如何解决这个问题?我应该先使用str()将每个变量转换为字符串吗?它似乎胜过了格式本身的目的...

1 个答案:

答案 0 :(得分:0)

:之后的所有内容作为参数发送到对象的__format__方法。在这种情况下,它相当于调用datetime.strftime。这也是它适用于strfloat的原因。 E.g:

>>> '{0:%-%m-%d}'.format(datetime.datetime.now())
'2017-12-31'

您最好的选择是'{0:300}'.format(str(datetime.datetime.now()))str(datetime.datetime.now())[:300]