【发布时间】:2015-05-07 18:51:25
【问题描述】:
关于 SO 问题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,但知道它为什么不起作用会很有趣?
【问题讨论】:
-
在我的 Windows 版本中,只有您的第一个示例可以正常工作。其余的结果为
ValueError: Invalid format string。 This question 可能会在标准/便携式指令与特定于平台的“增强”方面对您有所了解。 -
所以这取决于每个操作系统的libc实现。谢谢!关于这些示例如何/为什么通常适用于 unix 系统的任何提示?
标签: python python-2.7 datetime strftime