16

有没有一种灵活的方法来摆脱 Python 中日期字符串的前导零?

在下面的示例中,我希望得到 12/1/2009 作为回报,而不是 12/01/2009。我想我可以使用正则表达式。但对我来说,这似乎有点矫枉过正。有更好的解决方案吗?

>>> time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
'12/01/2009'

也可以看看

Python strftime - 没有前导0的日期?

4

4 回答 4

22

一个更简单易读的解决方案是自己格式化:

>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012
于 2010-02-22T09:33:15.103 回答
8

@OP,做一些字符串操作并不需要太多。

>>> t=time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y'))
>>> '/'.join( map( str, map(int,t.split("/")) ) )
'12/1/2009'
于 2010-02-22T09:24:15.120 回答
3

我建议一个非常简单的正则表达式。这不像是性能关键,是吗?

搜索\b0并替换为空。

IE。:

import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))
于 2010-02-22T09:19:40.527 回答
2
>>> time.strftime('%-m/%-d/%Y',time.strptime('8/1/2009', '%m/%d/%Y'))
'8/1/2009'

但是,我怀疑这取决于系统的strftime()实现,并且可能无法完全移植到所有平台,如果这对您很重要的话。

于 2010-02-22T09:35:22.943 回答