utils.config.cast 源代码
from datetime import datetime
__all__ = [
'mapping',
'optional',
'str_to_time',
]
[文档]
def mapping(sequence, item):
'''
产生转换函数,该函数将会将一个序列中的每个元素转换成另一个类型
Args:
sequence (Type[Iterable]): 转换为的序列类型
item (CastFunc): 转换函数
Returns:
Callable: 转换函数
'''
return lambda x: sequence(map(item, x))
[文档]
def optional(func, default = None):
def _func(x):
if x is None:
return default
return func(x)
return _func
DATETIME_FORMATS = [
'%Y-%m-%d %H:%M:%S',
'%Y-%m-%d %H:%M',
'%Y-%m-%d %H',
'%Y-%m-%d',
]
[文档]
def str_to_time(time_string: str, *formats: str, optional: bool = False):
'''
将字符串转换为时间
Args:
time_string (str): 字符串格式的时间
formats (str, optional): 允许的所有时间格式,如果不提供则使用默认的时间格式
optional (bool, optional): 可选时,转换失败返回``None``. Defaults to False.
Raises:
ValueError: 转换失败时提供原始值
Returns:
datetime | None: 转换结果
'''
for format in formats or DATETIME_FORMATS:
try:
return datetime.strptime(time_string, format)
except ValueError:
pass
if optional:
return None
raise ValueError(time_string)