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

谢谢!


当前回答

老问题,但是%l(小写l)在strftime中对我有用:不过,这可能不适用于每个人,因为我找到的Python文档中没有列出它

其他回答

简单地像这样使用replace:

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

它将输出:

'2017/7/21'

例如,使用“%-d”即使在相同操作系统的不同版本之间也不能移植。 更好的解决方案是分别提取日期组件,并在特定于日期的格式化操作符和每个组件的日期属性访问之间进行选择。

e = datetime.date(2014, 1, 6)
"{date:%A} {date.day} {date:%B}{date.year}".format(date=e)

基于Alex的方法,这将适用于字符串开头和空格后的情况:

re.sub('^0|(?<= )0', '', "01 January 2000 08:00am")

与.format或%-d相比,我更喜欢这个,因为它是跨平台的,并且允许我继续使用strftime(以获得“November”和“Monday”之类的东西)。

看一看-下面:

>>> 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)

下面是GNU C库中strftime()支持的修饰符的文档。(就像人们之前说的,它可能不方便携带。)你可能感兴趣的是:

%e而不是%d将用空格替换月中的第一天的前导零

它适用于我的Python (Linux)。我不知道它对你是否有效。