2

我正在寻找从字符串中解析日期。这个字符串可以保存不同的格式,我事先并不知道。

from datetime import datetime

try:
    return datetime.strptime(text, '%m/%d/%Y'))
except:
    try:
        return datetime.strptime(text, '%m/%d/%y')) 
    except:
        try:
            return datetime.strptime(text, '%Y/%m/%d'))
        except:
            try:
                return datetime.strptime(text, '%b%d/%Y'))
            except:
                return None

显然,这看起来太冗长了。我确信使用地图有更好的方法,但我真的很想听听您的意见 - 我讨厌重新发明轮子。

4

3 回答 3

6
from datetime import datetime

def getdate(text):
    formats = ('%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y')
    for format in formats:
        try:
            return datetime.strptime(text, format)
        except:
            pass
于 2013-09-26T13:36:41.383 回答
4

循环通过提供的格式优先级怎么样?

from datetime import datetime

def convert(text):
    for format in [ '%m/%d/%Y', '%m/%d/%y', '%Y/%m/%d', '%b%d/%Y' ]:
        try:
            return datetime.strptime(text, format)
        except:
            continue
    return None
于 2013-09-26T13:35:32.543 回答
3

只需datetutil.parser.parse按照此问题的答案中的说明使用

于 2013-09-26T13:42:33.087 回答