有没有一个相当于C#的DateTime.TryParse()的Python?

在Python中是否有与C#的DateTime.TryParse()等价的东西?

编辑:

我指的是它避免抛出异常,而不是猜测格式。


如果你不想要这个异常,赶上例外。

try:
    d = datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S")
except ValueError:
    d = None

在Python的禅宗中,显式比隐式更好。 strptime 总是返回以指定的确切格式解析的日期时间。 这是有道理的,因为你必须定义失败时的行为,也许你真正想要的是。

except ValueError:
    d = datetime.datetime.now()

要么

except ValueError:
    d = datetime.datetime.fromtimestamp(0)

要么

except ValueError:
    raise WebFramework.ServerError(404, "Invalid date")

通过明确说明,下一个读取故障转移行为的人就很清楚,并且这正是您所需要的。


或者您可能确信日期不能无效,它来自数据库DATETIME,列,在这种情况下,不会发生异常,所以不要捕捉它。


不,你要求的不是惯用的Python,所以通常不会有像标准库那样的丢弃错误的函数。 相关的标准库模块记录在此处:

http://docs.python.org/library/datetime.html

http://docs.python.org/library/time.html

解析函数都会在无效输入时引发异常。

然而,正如其他答案所指出的那样,为您的应用程序构建一个应用程序并不是很难(您的问题在Python中被表述为“在Python标准库中”而不是“在Python标准库中”),所以不清楚是否有人撰写这样的函数“在Python中”是否回答这个问题)。


这是一个等效的功能实现

import datetime

def try_strptime(s, format):
    """
    @param s the string to parse
    @param format the format to attempt parsing of the given string
    @return the parsed datetime or None on failure to parse 
    @see datetime.datetime.strptime
    """
    try:
        date = datetime.datetime.strptime(s, format)
    except ValueError:
        date = None
    return date
链接地址: http://www.djcxy.com/p/25183.html

上一篇: Is there a Python equivalent to C#'s DateTime.TryParse()?

下一篇: What is the best way to convert a string to UTF