有没有一个相当于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()?