Python 格林威治时间格式 Wed Jul 10 20:00:09 +0800 2019 转换为标准时间格式年月日时分秒%Y-%m-%d %H:%M:%S

需求:

将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

你可能感兴趣的:(python)