Yar*_*rin 70 python formatting datetime zero-pad
是否有一种打印Python日期时间的格式,不会在日期和时间使用零填充?
格式我现在正在使用:
mydatetime.strftime('%m/%d/%Y %I:%M%p')
Run Code Online (Sandbox Code Playgroud)
结果: 02/29/2012 05:03 PM
期望: 2/29/2012 5:03 PM
什么格式将月份表示为"2"而不是"02",时间表示为"5:03 PM"而非"05:03 PM"
Chr*_*man 108
避免上述"全部或全部"前导零方面的另一个替代方法是在字段类型前面放置一个减号:
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
Run Code Online (Sandbox Code Playgroud)
然后这个:'2015年4月10日03:00'
成为:'2015年4月10日凌晨3:00'
如果需要,您可以选择在当天前面减去一个减号.
sen*_*rle 88
新的字符串格式化系统提供了替代方案strftime.它非常易读 - 事实上,它可能更适合strftime该帐户.更不用说它没有零填充的事实:
>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now())
'3/1/2012'
Run Code Online (Sandbox Code Playgroud)
由于您可能希望在分钟字段中填充零,您可以这样做:
>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now)
'3/1/2012 20:00'
Run Code Online (Sandbox Code Playgroud)
如果你想要"常规"时间而不是"军事"时间,你仍然可以使用标准strftime说明符.方便的是,为了我们的目的,strftime 确实提供了12小时的代码填充空白而不是前导零:
'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now)
'4/4/2014 6:00PM'
Run Code Online (Sandbox Code Playgroud)
唉,这变得不那么可读了.正如@mlissner指出的那样,strftime在1900年之前的某些(所有?)平台上会失败.
Sve*_*ach 62
可用的格式化选项datetime.strftime()将全部为零填充.您当然可以使用自己的格式化功能,但在这种情况下最简单的解决方案可能是对以下结果进行后处理datetime.strftime():
s = mydatetime.strftime('%m/%d/%Y %I:%M%p').lstrip("0").replace(" 0", " ")
Run Code Online (Sandbox Code Playgroud)
(也就是说,如果你认为这样做真的值得麻烦.为什么不简单地留下零?)
小智 38
接受的答案不是一个正确的解决方案(恕我直言)适当的记录方法:
在Linux中,"#"被" - "代替:
%-d,%-H,%-I,%-j,%-m,%-M,%-S,%-U,%-w,%-W,%-y,%-Y
在Windows中," - "替换为"#":
%#d,%#H,%#I,%#j,%#m,%#M,%#S,%#U,%#w,%#W,%#y,%#Y
#Linux
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
# Windows
mydatetime.strftime('%#m/%d/%Y %#I:%M%p')
Run Code Online (Sandbox Code Playgroud)
资料来源:https://msdn.microsoft.com/en-us/library/fe06s4ak.aspx
正如Sagneta所说:Windows上的#hake技巧仅适用于本机python可执行文件.这对基于cygwin的python实现不起作用.
use*_*285 10
Chris Freeman在Linux上的很好回答。
在Windows上,它是:
mydate.strftime('%#m/%#d/%Y')
Run Code Online (Sandbox Code Playgroud)
认为可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
60220 次 |
| 最近记录: |