Python3 时间字符串格式化

用Python3对时间字符串进行处理,主要有下面两种时间格式:
①'2018/03/17'
②'2018/03/17 17:30:15'

也就是第一种时间为年月日格式,第二种为年月日+时分秒,现在我想怎样可以通过python的时间函数直接判断该时间字符串为第一种还是第二种,这样也方便我后面的操作。不然就要这样写(感觉很蠢):

clipboard.png

暂且想到的思路就是两种:
1.用try...except... ,不是第一种时间格式就报错,进入except中进行另一种时间格式处理
2.就是上面贴的图片的写法,根据获取的时间字符串长度来判断属于哪一种时间格式

希望了解的可以告知一下,多谢哈!

阅读 4.5k
4 个回答
date_str = '...'
date, time = date_str.split()
if date and time: # 第二种格式
    ...
else: # 第一种格式
    ...
record.trade_time = datetime.datetime.strptime(cells[8].strip('"'), '%Y/%m/%d %H:%M:%S' if len(cells[8].strip('"')) > 10 else '%Y/%m/%d')

试一下这条语句。

如果时间字符串标准的话,完全可以根据长度甚至是否含有空格等特定字符判断。否则还是要做好异常处理。

代码的话预处理统一先做,然后进行判断,避免重复的语句。

from datetime import datetime

def str2time(s):
    return datetime.strptime(s, '%Y/%m/%d %X' if ':' in s else '%Y/%m/%d') #取巧,判断:
    
a, b = '2018/03/17', '2018/03/17 17:30:15'
str2time(a)
str2time(b)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题