Pythondate时间格式没有零填充
是否有打印Pythondate时间的格式,不会在date和时间使用零填充?
现在使用的格式:
mydatetime.strftime('%m/%d/%Y %I:%M%p')
结果: 02/29/2012 05:03 PM
期望: 2012/2/29 5:03
什么格式将月份表示为“2”而不是“02”,时间为“5:03 PM”而不是“05:03PM”
datetime.strftime()
可用的格式选项将全部为零。 你当然可以推出你自己的格式化函数,但在这种情况下最简单的解决scheme可能是后处理datetime.strftime()
的结果:
s = mydatetime.strftime('%m/%d/%Y %I:%M%p').lstrip("0").replace(" 0", " ")
(也就是说,如果你决定这样做真的是值得的,为什么不简单地把零置入?)
新的string格式化系统提供了strftime
的替代scheme。 这是相当可读的 – 事实上,这个帐户可能更适合strftime
。 更不用提的是它不会零填充的事实:
>>> '{d.month}/{d.day}/{d.year}'.format(d=datetime.datetime.now()) '3/1/2012'
既然你可能需要在分钟字段填零,你可以这样做:
>>> '{d.month}/{d.day}/{d.year} {d.hour}:{d.minute:02}'.format(d=now) '3/1/2012 20:00'
如果你想要“常规”时间而不是“军事”时间,你仍然可以使用标准的strftime
说明符。 方便的是,为了我们的目的, strftime
确实提供了一个12小时的代码,填充空白而不是前导零:
'{d.month}/{d.day}/{d.year} {d:%l}:{d.minute:02}{d:%p}'.format(d=now) '4/4/2014 6:00PM'
这变得不太可读,唉。 正如@mlissner所指出的, strftime
在1900年以前的某些(所有)平台上将会失败。
另一种避免上面的“全部或全部”前导零方面的替代scheme是在字段types的前面放置一个负号:
mydatetime.strftime('%-m/%d/%Y %-I:%M%p')
那么这个:'4/10/2015 03:00 AM'
成为:'4/10/2015 3:00 AM'
如果需要,您可以select在一天之前放置一个减号。
接受的答案不是一个适当的解决scheme(恕我直言)正确的文件化的方法:
在Linux中,“#”被replace为“ – ”:
%-d,%-H,%-I,%-j,%-m,%-M,%-S,%-U,%-w,%-W,%-y,%-Y
在Windows中,“ – ”replace为“#”:
%#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')
来源: https : //msdn.microsoft.com/en-us/library/fe06s4ak.aspx
正如Sagneta所述:Windows上的#hash技巧只适用于本地python可执行文件。 这不适用于基于cygwin的python实现。
克里斯·弗里曼在Linux上的好答案。
在Windows上,它是:
mydate.strftime('%#m/%#d/%Y')
认为可能有帮助。