首页 > 解决方案 > 没有零的 Python strftime 天数

问题描述

为什么此页面中的代码不起作用?:http ://strftime.org/ 。我想输出不带前导零的日期和月份,例如'm/d/yyyy'

例如: '4/5/1992' 是

'04/05/1992' 否

from datetime import datetime, timedelta, date
yest = datetime.strftime(datetime.now() - timedelta(21), '%-m-%-d-%Y')
print(yest)
ValueError                                Traceback (most recent call last)
<ipython-input-35-7c70a0a7eee5> in <module>
      1 from datetime import datetime, timedelta, date
----> 2 yest = datetime.strftime(datetime.now() - timedelta(21), '%-m-%-d-%Y')
      3 print(yest)

ValueError: Invalid format string

标签: pythonstringdate

解决方案


%-m选项确实说明格式是特定于平台的,因此里程可能会有所不同。

您可以在 Python 3 中简单地使用 f 字符串。

yest = datetime.now() - timedelta(21)
yest = f'{yest.month}/{yest.day}/{yest.year}'
>>> yest
'10/9/2019'

对于您在评论中解释的数据框:

df = pd.DataFrame({
    'fecha_vencimiento': [
        '12/25/2009', '01/05/2010', '04/13/2011', '']})

df['fecha_vencimiento'] = pd.to_datetime(
    df['fecha_vencimiento'], format='%m/%d/%Y', errors='coerce').apply(
        lambda x: f'{x.month}/{x.day}/{x.year}' 
        if pd.notnull(x) else '')

推荐阅读