Python如何将任意顺序的人性化时间字符串转为datetime或Unix时间
实现方向指引
- 第一步:定义单位映射规则与匹配正则
先明确所有支持的时间单位对应关系,比如y=年、M=月、d=日、h=时、m=分、s=秒,注意区分大小写避免月和分的标识冲突。写正则表达式全局匹配输入字符串里的「数字+单位」组合,比如用r'(\d+)([yMdhms])'可以无视输入顺序提取所有有效字段。 - 第二步:初始化缺省基准时间
取当前时间(按需选择本地时间或UTC时间)作为基准,未被用户输入覆盖的字段默认继承基准时间的取值,比如用户没输入年份就默认用当前年份,和你给出的示例逻辑一致。 - 第三步:覆盖生成目标时间
把正则提取到的所有字段值,逐个替换基准时间的对应字段,不管用户输入顺序,只要对应单位替换对应属性即可,比如提取到6h就改小时字段为6,提取到4M就改月份字段为4。 - 第四步:合法性校验与结果转换
校验生成的时间是否合法(比如避免出现2月30日、13月这类无效值),校验通过后直接调用datetime对象的timestamp()方法即可得到Unix时间戳。
内容的提问来源于stack exchange,提问作者Johann Lau
相关产品推荐
相关产品推荐

