需求:
将excel中批量的格林威治时间格式字符串 Wed Jul 10 20:00:09 +0800 2019 转换为好理解的标准时间格式 2019-07-10 20:00:09
知识点:
strptime:将一定时间格式的字符串转换成时间类型对象
strftime:将时间类型对象转换为特定格式字符串输出
具体的时间格式字母表示,请参考:https://blog.csdn.net/qq_36607551/article/details/80049650
思路:
1. 将用strptime将字符串转换成时间对象,第二个参数格式要按照格林威治时间给%a %b %d %H:%M:%S %Y
2. 再用strftime将时间对象转换成想要的时间格式字符串,目标格式%Y-%m-%d %H:%M:%S
留坑:
Wed Jul 10 20:00:09 +0800 2019 的时间匹配格式并不是 %a %b %d %H:%M:%S %Y,中间少一个时区+0800不知道怎么表示,因此用了一次字符串截取转换,辣个能告诉我时区表示啊啊啊啊啊啊啊,用%Z不对
代码说明:
实际上,用print函数输出第1步结果,控制台即显示2019-07-10 20:00:09了,应该是python自动做了字符串格式转换,但想要输出到文件还是必须做第2步。
另外excel的写入要求比较严格,第二步直接写入到excel还是会报unicode格式不支持的问题,还是txt文本写入好用啊。
import datetime def timetostr(self): f = open('../result/result.txt', "w") for i in range(1,self.table.nrows): str =self.table.cell(i, 0).value str2 = str[0:-10] + "2019" dt = datetime.datetime.strptime(str2, '%a %b %d %H:%M:%S %Y') t=dt.strftime("%Y-%m-%d %H:%M:%S") f.write(t) f.write('\n')
参考:
strptime和strftime的对比说明:
https://blog.csdn.net/weixin_42139375/article/details/81105479
strptime的详解:
https://blog.csdn.net/qq_36607551/article/details/80049650