Answers:
实际上,我遇到了同样的问题,并且我意识到,如果在%
和字母之间添加连字符,则可以删除前导零。
例如%Y/%-m/%-d
。
这仅适用于Unix(Linux,OS X),而不适用于Windows(包括Cygwin)。在Windows上,您可以使用#
,例如%Y/%#m/%#d
。
ValueError: '-' is a bad directive in format '%b %-d, %Y'
。OSX,Python 2.7。
%#d
将在Windows上执行相同操作
format
从python2.6开始,随着方法的出现,我们可以做这种事情:
>>> 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'
time.strftime('%A %B %d, %Y')
(产生(现在在英语语言环境中)),则不能单独使用Tuesday October 07, 2014
。
__format__
钩子,可让您编写类似的内容。
'{dt.hour}'
使用24小时时钟:(使用第二个选项还是带你回到使用。'{%#I}'
在Windows和'{%-I}'
Unix上。
%
根据http://docs.python.org/library/time.html的介绍,某些平台可能支持字母之间的宽度和精度规范(例如月份中的“ d”),但这绝对是不可移植的解决方案(例如,在我的Mac上不起作用;-)。也许您可以在之后使用字符串替换(或RE,对于真正讨厌的格式)strftime
进行补救?例如:
>>> 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'
这是strftime()
GNU C库支持的修饰符的文档。(就像之前说过的那样,它可能不是便携式的。)您可能感兴趣的是:
%e
而不是%d
将月份中的前导零替换为空格它适用于我的Python(在Linux上)。我不知道它是否对您有用。
>>> import datetime
>>> d = datetime.datetime.now()
>>> d.strftime('X%d/X%m/%Y').replace('X0','X').replace('X','')
'5/5/2011'
.replace('X0','X').replace('X','')
?只要做.replace('X0', '')
,那会很好。
在Windows上,添加一个'#',例如'%#m /%#d /%Y%#I:%M:%S%p'
供参考:https : //msdn.microsoft.com/en-us/library/fe06s4ak.aspx
我发现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')
import django.conf
django.conf.settings.configure()
看一下-
波纹管:
>>> from datetime import datetime
>>> datetime.now().strftime('%d-%b-%Y')
>>> '08-Oct-2011'
>>> datetime.now().strftime('%-d-%b-%Y')
>>> '8-Oct-2011'
>>> today = datetime.date.today()
>>> today.strftime('%d-%b-%Y')
>>> print(today)
只需这样使用replace
:
(datetime.date.now()).strftime("%Y/%m/%d").replace("/0", "/")
它会输出:
'2017/7/21'
因为%d
您可以使用转换为整数,int()
否则它将自动删除前导0并变为整数。然后,您可以使用将其转换回字符串str()
。
因为Python实际上只是strftime(3)
在您的平台上调用C语言函数,所以可能是有些格式字符可用于控制前导零;尝试man strftime
看看。但是,当然,结果不会是可移植的,因为Python手册会提醒您。:-)
我会尝试使用一种新样式的datetime
对象,该对象具有诸如t.year
和t.month
和的属性t.day
,并通过%
运算符的正常高效能格式来设置这些对象,该格式确实支持对前导零的控制。有关详细信息,请参见http://docs.python.org/library/datetime.html。更好的是,"".format()
如果您的Python拥有运算符,并且更现代,请使用运算符。它也有许多数字格式选项。请参阅:http : //docs.python.org/library/string.html#string-formatting。