python非标准时间的转换方法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇"python非标准时间的转换方法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2026年11月01日python非标准时间的转换方法
这篇"python非标准时间的转换方法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"python非标准时间的转换方法"文章吧。
可匹配结构:
今天~前天, 几天前, 分钟秒前等 | 2017-1-4 12:10 | 2017/1/4 12:10 | 2018年4月2日 12:12 | 2018年4月2日 | 2017-1-4 | 2017/1/4 | 1/4 |
# -*- coding:utf-8 -*-from datetime import datetime, timedeltaimport reimport timedef tz_offset(tz): res = (re.search(r"(?P[-+])(?P d{2}):?(?P d{2})", tz) or re.search("", "")).groupdict() offset = (1 if res.get("F", "+")=="+" else -1) * timedelta( hours = int(res.get("H", 0)), minutes = int(res.get("M", 0))) return offsetdef parse_date(data, fmt, tz): """ 时间匹配模块,可转化为固定格式 返回时间字符串 0000-00-00 00:00:00 可匹配结构 |今天~前天, 几天前,分钟秒前等 | 2017-1-4 12:10 | 2017/1/4 12:10 | 2018年4月2日 12:12 | 2018年4月2日 | 2017-1-4 | 2017/1/4 | 1/4 | """ offset = tz_offset(tz) if fmt == "auto": now = (datetime.utcnow() + timedelta(hours=8)).replace(microsecond=0) + offset now_1 = now - timedelta(days=1) now_2 = now - timedelta(days=2) # 几/刚/今天/昨天/前天 x = data.strip() x = x.replace(u"几", " 0 ") x = x.replace(u"刚[刚才]", now.strftime(" %Y-%m-%d %H:%M:%S ")) x = x.replace(u"今天", now.strftime(" %Y-%m-%d ")) x = x.replace(u"昨天", now_1.strftime(" %Y-%m-%d ")) x = x.replace(u"前天", now_2.strftime(" %Y-%m-%d ")) x = re.sub(r"[年月]", "/", x) x = re.sub(r"[日]", " ", x) x = re.sub(r"s{2,}", r" ", x) # XX前 res = (re.search(r"(?P d+)s*秒钟?前", x) or re.search(r"(?Pd+)s*分钟前", x) or re.search(r"(?P d+)s*小时前", x) or re.search(r"(?P d+)s*天前", x) or re.search("", "")).groupdict() if res: dt = now - timedelta( days=int(res.get("d", 0)), hours=int(res.get("H", 0)), minutes=int(res.get("M", 0)), seconds=int(res.get("S", 0)) ) # 不是几天前分钟前的形式 else: # XX-XX-XX XX:XX:XX res = (re.search(r"(?P d+)[/-](?P d+)[/-](?P d+)(s+(?P d{1,2}):(?P d{2})(:(?P d{2}))?)?", x) or re.search("", "")).groupdict() if res == dict(): # 匹配没有年份的时候,格式 XX-XX XX:XX:XX 月-日 时:分:秒 或 17年10月10日 时:分:秒 res = (re.search( r"(?Pd{1,2})[/-](?P d+)(s+(?P d{2}):(?P d{2})(:(?P d{2}))?)?", x) or re.search("", "")).groupdict() if res: Y = res.get("Y", now.year) Y = "20" + Y if len(str(Y)) == 2 else Y m = res.get("m", now.month) d = res.get("d", now.day) H = res.get("H", now.hour) M = res.get("M", now.minute) S = res.get("S", 0) dt = datetime( year=int(Y) if Y != None and 1987 <= int(Y) <= now.year else now.year, month=int(m) if m != None else now.month, day=int(d) if d != None else now.day, # 如果没有时分秒,则被认定为00:00:00 hour=int(H) if H != None else 0, minute=int(M) if M != None else 0, second=int(S) if S != None else 0 ) else: # 1970-01-01 00:00:00 # dt = datetime.utcfromtimestamp(0)+offset return "" # 时间可能超过当前时间,若超过则减去一年 if int(time.mktime((dt - offset).timetuple())) > int(time.time()): # 时间超过当前时间,减去一年 delta = timedelta(days=-365) real_time = (dt - offset) + delta real_time = real_time.strftime("%Y-%m-%d %H:%M:%S") else: real_time = (dt - offset).strftime("%Y-%m-%d %H:%M:%S") return real_timeif __name__ == "__main__": print(parse_date("2秒前", "auto", "")) print(parse_date("2分钟前", "auto", "")) print(parse_date("2小时前", "auto", "")) print(parse_date("昨天 00:30", "auto", "")) print(parse_date("07-20", "auto", ""))
以上就是关于"python非标准时间的转换方法"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
内容
时间
方法
标准
标准时
小时
文章
格式
知识
篇文章
结构
价值
大部分
字符
字符串
就是
年份
年月
形式
时候
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
丰台科技园 互联网
润盈互联网科技
互联网科技视频素材
互联网 科技服务平台
富国互联网科技创新基金
上海电发互联网科技有限公司
西藏七维空间互联网科技有限公司
哈尔滨新华互联网科技学院
彤创互联网科技有限公司
岳阳华臻互联网科技有限公司
荆州市昕露互联网络科技有限公司
济南有互联网科技公司吗
江苏互联网智能科技软件
互联网科技新闻
版纳互联网科技选哪家
北京天晋互联网科技有限公司
科技互联网公司两年变化
六子台科技互联网展会
利用互联网等科技手段
互联网科技快速发展优美句子
互联网扶贫科技
科技信息互联网
麻工互联网科技
合肥互联网科技公司
猪兼强互联网科技
美国互联网黑科技
花神(南京)互联网科技有限公司
科技互联网海报
信承诺互联网科技有限公司
科技美学互联网 艺术