如何使用python将不同格式的日期转换为一种格式

How to convert different formats of date into one format using python

本问题已经有最佳答案,请猛点这里访问。

输入:日期字段,包括各种格式的日期(包括:yyyy/dd/mmdd-mm-yyyy等),例如:

1
2
3
2017/5/23
22-04-2015
20150504

输出:统一格式的日期字段。所有日期值都应转换为yyyymmdd格式。即,上述输入应产生如下输出:

1
2
3
20170523
20150422
20150504

我试过使用dateutils,但输出格式是2015-05-23

1
2
3
4
5
6
7
8
9
10
from datetime import datetime
INPUT_FILENAME = 'date.txt'
OUTPUT_FILENAME = 'newfile.txt'
INPUT_DATE_FORMATS = {'column1dt': '%Y%m%d', 'column1dt': '%d/%m/%Y'}
OUTPUT_DATE_FORMAT = '%Y%m%d'
with open(INPUT_FILENAME, 'rt') as finput:
reader = finput.readlines()
with open(OUTPUT_FILENAME, 'wt') as foutput:
    print foutput
    for row in reader:


下面是如何猜测日期字符串的格式:

1
2
3
4
5
6
7
8
9
import datetime

def guess_date(string):
    for fmt in ["%Y/%m/%d","%d-%m-%Y","%Y%m%d"]:
        try:
            return datetime.datetime.strptime(string, fmt).date()
        except ValueError:
            continue
    raise ValueError(string)

样品如下:

1
2
3
4
samples ="2017/5/23","22-04-2015","20150504"

for sample in samples:
    print(guess_date(sample))

你得到:

1
2
3
2017-05-23
2015-04-22
2015-05-04

使用d.strftime("%Y%m%d")选择所需格式:

1
2
3
for sample in samples:
    d = guess_date(sample)
    print(d.strftime("%Y%m%d"))

您还可以使用dateutil.parser以任何格式解析日期。

见例子:

1
2
>>> from dateutil.parser import *
>>> now = parse("Sat Oct 11 17:13:46 UTC 2003")


你可以这样做:

1
2
3
4
import datetime

datetime_object = datetime.datetime.strptime('22-04-2015', '%d-%m-%Y')
datetime_output = datetime_object.strftime('%Y%m%d')

然后根据需要更改日期的格式。