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

谢谢!


当前回答

自从python2.6以来,我们可以使用format方法来做这类事情:

>>> import datetime
>>> '{dt.year}/{dt.month}/{dt.day}'.format(dt = datetime.datetime.now())
'2013/4/19'

虽然可能超出了最初问题的范围,但对于更有趣的格式,你可以这样做:

>>> '{dt:%A} {dt:%B} {dt.day}, {dt.year}'.format(dt=datetime.datetime.now())
'Wednesday December 3, 2014'

从python3.6开始,它可以表示为内联格式化字符串:

Python 3.6.0a2 (v3.6.0a2:378893423552, Jun 13 2016, 14:44:21) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import datetime
>>> dt = datetime.datetime.now()
>>> f'{dt:%A} {dt:%B} {dt.day}, {dt.year}'
'Monday August 29, 2016'

其他回答

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

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

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

我迟到了,但是一个简单的列表切片就可以完成工作

today_date = date.today().strftime('%d %b %Y')
if today_date[0] == '0':
    today_date = today_date[1:]

我发现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')    

虽然有点晚了,但是%-d对我来说是有效的。

datetime.now()。strftime('%B %-d, %Y')生成类似"November 5, 2014"的内容

欢呼:)

简单地像这样使用replace:

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

它将输出:

'2017/7/21'