python-3.x 如何添加前导零并将日期字段转换为YYYY-MM-DD?[duplicate]

bkkx9g8r  于 2023-02-14  发布在  Python
关注(0)|答案(2)|浏览(71)
    • 此问题在此处已有答案**:

Parse date string and change format(10个答案)
2天前关闭。
我在json文件中有一些日期,看起来像这样:

2020-12-11
2020-5-1
2020-3-21

我想把它们转换成YYYY-MM-DD。它们已经是类似的格式了,但是我想为一位数的月份和日期添加前导零。
输出应如下所示:

2020-12-11
2020-05-01
2020-03-21

我该怎么做呢?

sy5wg1nm

sy5wg1nm1#

datetutil中的解析器可以按如下方式使用(d1是原始日期字符串):

from dateutil import parser
d2 = parser.parse(d1).date()

产生(日期时间格式,如果需要,可使用strftime()转换为字符串):

2020-12-11
2020-05-01
2020-03-21

还有一个选项(dayfirst = True)用于声明月前一天。

gfttwv5a

gfttwv5a2#

重新格式化日期字符串的常用方法是使用datetime模块(请参见How to convert a date string to different format)。
在这里,您需要使用格式代码(引用文档中的描述)

  • %Y-年份,世纪为十进制数。
  • %m-月份,以零填充的十进制数字表示。
  • %d-月份中的日期,以零填充的十进制数字表示。

根据datetime文档中的脚注(9),%m%d在与strptime一起使用时接受不带前导零的月份和日期数字,但在与strftime一起使用时将输出零填充数字。
因此,您可以使用相同的格式字符串%Y-%m-%d来执行strptimestrftime之间的往返,以添加零填充。

from datetime import datetime

def reformat(date_str):
    fmt = '%Y-%m-%d'
    return datetime.strptime(date_str, fmt).strftime(fmt)

相关问题