摆脱 Python 中日期字符串的前导零? [复制]

Posted

技术标签:

【中文标题】摆脱 Python 中日期字符串的前导零? [复制]【英文标题】:Get rid of leading zeros for date strings in Python? [duplicate] 【发布时间】:2011-01-19 13:42:11 【问题描述】:

有没有一种灵活的方法可以去除 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 - date without leading 0?

【问题讨论】:

该脚本用于输出格式非常精美的 pdf,我认为前导零在视觉上并不吸引人。不完全是一个表演停止者,但我很想找到一种快速的方法来避免它们...... 【参考方案1】:

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

>>> d = datetime.datetime.now()
>>> "%d/%d/%d"%(d.month, d.day, d.year)
4/8/2012

【讨论】:

我花了很长时间才找到这个特定问题的答案。我必须将我的日期传递给 date 类,它只接受 date(d,m,yyyy) 而不是 date(dd,mm,yyyy)【参考方案2】:

@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'

【讨论】:

现在有一个更好的 Python 3 解决方案:datetime.strptime("05/13/1999", "%m/%d/%Y").strftime("%m/%-d/%Y")【参考方案3】:

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

搜索 \b0 并替换为空。

我。即:

import re
newstring = re.sub(r"\b0","",time.strftime('%m/%d/%Y',time.strptime('12/1/2009', '%m/%d/%Y')))

【讨论】:

这几乎就是我所拥有的,但正如我在最初的帖子中所说,我只是认为将 re 用于如此微不足道的事情有点过头了...... 嗯,你可以split 字符串,lstrip 零,然后重新join 字符串,但这可能更难阅读。 这就是我最终得到的结果,在我看来,它产生了最干净的代码。尽管如此,我仍然感到震惊,这是如此不平凡!【参考方案4】:
>>> time.strftime('%-m/%-d/%Y',time.strptime('8/1/2009', '%m/%d/%Y'))
'8/1/2009'

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

【讨论】:

是的,它确实取决于系统的 strftime。例如不适用于 Python2.6.1+WinXP

以上是关于摆脱 Python 中日期字符串的前导零? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中使用 for 循环在日期列中添加前导零

使用 to_char 函数解析为字符串时,如何从 Oracle 中的日期和月份值中删除前导零?

在 Apache Spark 中,我有一个数据框,其中有一列包含字符串(它的日期),但月份和日期中缺少前导零

如何在 JavaScript 中输出带有前导零的数字? [复制]

如何用前导零格式化资源字符串? [复制]

不带前导零的日期时间对象