How to convert different formats of date into one format using python
本问题已经有最佳答案,请猛点这里访问。
输入:日期字段,包括各种格式的日期(包括:
1 2 3 | 2017/5/23 22-04-2015 20150504 |
输出:统一格式的日期字段。所有日期值都应转换为
1 2 3 | 20170523 20150422 20150504 |
我试过使用
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 |
使用
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') |
然后根据需要更改日期的格式。