python非标准时间的转换方法
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇"python非标准时间的转换方法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
有纤维肉瘤可以服务器
比亚迪系统软件开发方向
河南省网络安全法
楚雄州网络安全培训
漳平市软件开发设计
小米记事本应用数据库
浙江企业软件开发价格表
饥荒 服务器添加管理员
安徽办公系统软件开发费用
恒生互联网etf恒生科技指数
移动电话服务器密码
广州荔支网络技术有限公司位置
漯河软件开发简介
网络安全剪辑模板
生成数据库关系图
做软件开发要学网络吗
电脑连接服务器后黑屏
中职网络技术教学大纲
国家网络安全宣传活动周
竹山正规软件开发不二之选
服务器什么时候会自动重启
时序数据库api
宿州市暨桥区网络安全宣传
手机网速最快的服务器dns
英国最好的网络安全专业
桌面软件开发python
网络安全空间的故事
信息安全网络安全数据安全的关系
移动dns服务器地址怎么获得的
lol客户端服务器连接不上