当使用Python strftime时,是否有一种方法可以删除日期的第一个0,如果它在10号之前,即。01 = 1?找不到一个%的东西吗?

谢谢!


当前回答

根据http://docs.python.org/library/time.html的说法,一些平台可能支持在%和字母之间的宽度和精度规格(例如“d”表示月份的日期),但这绝对是一个不可移植的解决方案(例如,在我的Mac上不能工作;-)。也许你可以在strftime之后使用字符串替换(或RE,对于非常讨厌的格式)来补救这个问题?例如:

>>> y
(2009, 5, 7, 17, 17, 17, 3, 127, 1)
>>> time.strftime('%Y %m %d', y)
'2009 05 07'
>>> time.strftime('%Y %m %d', y).replace(' 0', ' ')
'2009 5 7'

其他回答

简单地像这样使用replace:

(datetime.date.now ()) .strftime(“% Y / % m / % d”)。替换(" / 0”、“/”)

它将输出:

'2017/7/21'

我发现Django模板日期格式过滤器是快速和简单的。它去掉了前导零。如果你不介意导入Django模块,可以查看一下。

http://docs.djangoproject.com/en/dev/ref/templates/builtins/#date

from django.template.defaultfilters import date as django_date_filter
print django_date_filter(mydate, 'P, D M j, Y')    

实际上我也遇到了同样的问题,我意识到,如果在%和字母之间添加一个连字符,就可以去掉前导零。

例如%Y/%-m/%-d。

这只适用于Unix (Linux, OS X),而不是Windows(包括Cygwin)。在Windows上,您可以使用#,例如%Y/%#m/%#d。

Python 3.6 +:

from datetime import date
today = date.today()
text = "Today it is " + today.strftime(f"%A %B {today.day}, %Y")

对于%d,您可以使用int()将其转换为整数,然后它将自动删除前导0并变成整数。然后可以使用str()将其转换回字符串。