为什么"% - d"或"% - e"删除前导空格还是零?

时间:2015-03-06 07:41:12

标签: python python-2.7 datetime strftime

在问题904928 (Python strftime - date without leading 0?) Ryan回答:

  

其实我有同样的问题,我意识到,如果你添加一个   %和字母之间的连字符,你可以删除前导零。

     

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

我遇到了同样的问题,这是一个很好的解决方案,但是,为什么这样做呢?

>>> import datetime
>>> datetime.datetime(2015, 3, 5).strftime('%d')
'05'

>>> datetime.datetime(2015, 3, 5).strftime('%-d')
'5'

# It also works with a leading space
>>> datetime.datetime(2015, 3, 5).strftime('%e')
' 5'

>>> datetime.datetime(2015, 3, 5).strftime('%-e')
'5'

# Of course other numbers doesn't get stripped
>>> datetime.datetime(2015, 3, 15).strftime('%-e')
'15'

我找不到任何关于此的文件? - > python datetime docs / python string operations

看起来这并不适用于Windows机器,我不会使用Windows,但知道它为什么不工作会很有趣?

1 个答案:

答案 0 :(得分:25)

Python datetime.strftime() delegates to C strftime() function that is platform-dependent

  

支持的全套格式代码因平台而异,   因为Python调用平台C库的strftime()函数,和   平台变化很常见。查看完整的格式代码集   在您的平台上支持,请参阅strftime(3)文档。

Glibc notes for strftime(3)

  

- (破折号)请勿填充数字结果字符串。

我的Ubuntu机器上的结果:

>>> from datetime import datetime
>>> datetime.now().strftime('%d')
'07'
>>> datetime.now().strftime('%-d')
'7'