首页 > 解决方案 > Python如何使用strftime自定义日期时间格式

问题描述

file.write("%s," %(fake.date_between(start_date=datetime(2001,1,1),end_date= datetime(2015,1,1))).strftime("%m / %Y").replace('0 ',' '))

在将数据写入 csv 文件时,我希望输出为 monthnumber/year ex 8/2019,但是当我签入 csv 文件时,此代码返回 Aug-2019。错误是什么?

标签: pythondatepython-datetimestrftimefaker

解决方案


“Aug-2019”可能来自使用“%b-%Y”,而不是来自“%m / %Y”。请仔细检查此文档:https ://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

由于您需要像“8/2019”这样的输出,因此年份部分的明显选择是使用“%Y”。但是对于月份部分来说有点棘手,因为 python 只允许零填充数字月份输出,即“%m”。前导零会出现几个月,但不是全部。直接替换在这里不起作用。我建议使用正则表达式。下面的片段显示了如何使用正则表达式来删除前导零(如果有)。

import re
import datetime
d = datetime.datetime.now()
d.strftime('%m/%Y') # --> '03/2020'
re.sub('^0', '', d.strftime('%m/%Y')) # --> '3/2020'

推荐阅读