python非标准时间的转换方法
发表于:2024-10-18 作者:千家信息网编辑
千家信息网最后更新 2024年10月18日,这篇"python非标准时间的转换方法"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2024年10月18日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安全错误
数据库的锁怎样保障安全
吴江区运营网络技术费用是多少
上海睿渠网络技术公司
防欺凌网络安全交通安全心得体会
战地1出现无法与ea服务器连接
华硕笔记本只能启动网络安全模式
中国5g网络安全吗
国泰安数据库企业专利
1u 服务器 显卡
软件开发的成本很难控制
南宁电信网络安全控制平台
网络安全导论pdf
网络安全渠道还是
国务院关于网络安全审查的通知
网络安全3二级警长
广州直播软件开发教程
阿里云学生服务器升级
数据库图标 png
软件开发属于第几类制造业
维护网络安全有利于经济繁荣
数据库技术A2018年B劵
舒城找网络技术有限公司
做软件开发也要上夜班吗
分布式数据库厂家
太仓正规网络技术管理方法
app 游戏 软件开发
上海品牌网络技术怎么样
网络安全策略主要涉及
艾尔登法环登录不了服务器最新
软件开发员长期计划
大学编程是用什么软件开发