python非标准时间的转换方法
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇"python非标准时间的转换方法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2025年11月08日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安全错误
数据库的锁怎样保障安全
IBM服务器经销商
租用服务器需要开哪些安全
贵港bim软件开发工程
比特币网络安全知识
法兰克系统数据库工具
数据库有哪两部分组成
门锁管理系统连接数据库失败
营销软件开发加盟
电商平台app软件开发价格
数据库正版授权书
oracle数据库查询
把token存入数据库的弊端
多媒体考试数据库软件
珍林网络技术是外包么
上海动产管理软件开发定制方案
多条链路怎么接一台服务器
北京订制软件开发公司
网络安全培训情况小结
什么是暑假网络安全
黄埔网络安全建设怎么收费
密山市国家网络安全宣传周活动
大专数据库技术与应用
oracle实例和数据库
中国科技软件开发行业数据库
peter软件开发
菜鸟要学的数据库基础知识
未来科技前沿智能互联网
严格执行网络安全工作规程
网络安全被动防御和主动防御
电商计算机网络安全