我正在尝试解析日期并将其设置为正确的格式,这是我到目前为止所尝试的:
import csv
import sys
import os
import re
import fnmatch
import csv
from dateutil.parser import parse as parseDate
from datetime import datetime, time, timedelta
chaine = '16/12/201602:15:00'
date = chaine[:10] + " " + chaine[11:]
print date
newd = parseDate(date, yearfirst=True)
print newd
newd = newd.replace('-','')
newd = newd.replace(':','')
print newd
这就是我得到的结果:
16/12/2016 2:15:00
2016-12-16 02:15:00
Traceback (most recent call last):
File "t.py", line 25, in <module>
newd = newd.replace('-','')
TypeError: an integer is required
我在这里想念什么?
谢谢
答案 0 :(得分:4)
要修复当前逻辑,您需要在newd
之后将parseDate
变量强制转换为字符串:
newd = str(newd).replace('-','')
^^^^^^^^^
请参阅Python demo
或者,使用strptime
/ strftime
:
from dateutil.parser import parse as parseDate
from datetime import datetime, time, timedelta
from time import strftime
chaine = '16/12/201602:15:00'
dt = datetime.strptime(chaine, '%d/%m/%Y%I:%M:%S')
# 16/12/2016 2:15:00
print(dt.strftime("%Y/%m/%d %H:%M:%S"))
#2016-12-16 02:15:00
print(dt.strftime("%Y-%m-%d %H:%M:%S"))
# 20161216 021500
print(dt.strftime("%Y%m%d %H%M%S"))
答案 1 :(得分:0)
在你的代码中newd是一个datetime.datetime对象,而不是一个字符串。你可以用
看到它print type(newd) shows <type 'datetime.datetime'>
因此您无法使用字符串替换 你可以使用像
这样的离散属性 newd.year .month .day etc.
创建自己的字符串。(更多关于Python doc )
或使用 strftime 方法