将任何字符串转换为日期

时间:2018-05-29 23:51:46

标签: python string python-3.x date datetime

我需要在视图中将字符串转换为日期。考虑到这一点,我想知道实现这一点的最佳方法,涵盖了大多数情况。

是否有任何本机Python 3. *方式来对待它?

如果没有,我该怎么办呢?

提前致谢!

import datetime

def foo(bar):
    date = make_date(bar)
    return date

def make_date(string):
    try:
        if isinstance(string, str):                                                         # python 3.* and up
            if '/' in string:
                if ':' in string:                                                           # '29/05/2018 21:42:42'
                    return datetime.datetime.strptime(string, '%d/%m/%Y %H:%M:%S').date()
                else:                                                                       # '29/05/2018'
                    return datetime.datetime.strptime(string, '%d/%m/%Y').date()
            elif '-' in string:
                if ':' in string:                                                           # '2018-05-29 21:42:42'
                    string = string.replace('Z', '')                                        # '2018-05-29T21:42:42Z'
                    return datetime.datetime.strptime(string, '%Y-%m-%dT%H:%M').date()
                else:                                                                       # '2018-05-29'
                    return datetime.datetime.strptime(string, '%Y-%m-%d').date()
        elif isinstance(string, (date)):                                                    # datetime.date(2018, 5, 29)
            return string
        elif isistance(string, (datetime)):                         # datetime.datetime(2018, 5, 29, 21, 42, 42, 424242)
            return string.date()
        return None
    except:
        return None

0 个答案:

没有答案