当前位置: 首页 > news >正文

将个人微信中的时间改成标准的日期时间格式

list1=["10:05","上午 10:07","下午 2:07","晚上 8:07","昨天 16:07","星期天 19:27","星期二 19:27","星期四 14:27","2025年1月10日 17:43"]from datetime import datetime, timedelta
from datetime import date, timedelta
import redef format_time(time_str):# 解析时间字符串为datetime对象dt = datetime.strptime(time_str, '%Y/%m/%d %H:%M')# 格式化datetime对象为所需格式的字符串formatted_time_str = dt.strftime('%Y/%m/%d %H:%M:%S')return formatted_time_strdef get_weekdays_dict_from_last_sunday_to_today():# 假设今天是2025年1月26日(可以根据实际情况动态获取)today = date.today()#获取上周周日日期last_sunday=""if today.weekday() == 6:  # 注意weekday()方法中周日返回的是6last_sunday = today - timedelta(days=7)else:days_since_last_sunday = (today.weekday() + 1) % 7last_sunday = today - timedelta(days=days_since_last_sunday)# print(last_sunday.strftime("%Y-%m-%d"))# 起始日期和结束日期start_date = last_sundayend_date = today time_periods_of_week = {"Sunday":"星期天","Monday": "星期一","Tuesday": "星期二","Wednesday": "星期三","Thursday": "星期四","Friday": "星期五","Saturday": "星期六"}# 创建一个字典来保存结果dates_dict = {}# 开始循环的日期current_date = start_datewhile current_date <= end_date:dates_dict[time_periods_of_week[current_date.strftime("%A")]] = current_date.strftime("%Y/%m/%d")# 增加一天current_date += timedelta(days=1)return dates_dictdef convert_dates(date_list):week_dates_dict=get_weekdays_dict_from_last_sunday_to_today()today = datetime.now()# 定义时间段映射time_periods = {"上午": "AM","下午": "PM","晚上": "PM"}for idx,item in enumerate(date_list):# 处理时间段for period, replacement in time_periods.items():if period in item:item=item.replace(period,"").strip()item=item+f" {replacement}"break# 处理昨天if "昨天" in item:yesterday = today - timedelta(days=1)item = item.replace("昨天", yesterday.strftime("%Y/%m/%d"))date_list[idx] = format_time(item)elif "星期" in item:for key,value in week_dates_dict.items():if key in item:item = item.replace(key,value)date_list[idx] = format_time(item)break# 处理具体日期elif re.match(r"\d{4}年\d{1,2}月\d{1,2}日", item):date_time = datetime.strptime(item, "%Y年%m月%d日 %H:%M")date_list[idx] = date_time.strftime("%Y/%m/%d %H:%M:%S")# 处理时间else:# 处理24小时制时间if re.match(r"^\d{1,2}:\d{2}$",item):#只有时间date_time = datetime.strptime(item, "%H:%M")else:#带有AM或者PM的日期和时间date_time = datetime.strptime(item.strip(), "%I:%M %p")date_time = date_time.replace(year=today.year, month=today.month, day=today.day)date_list[idx]=date_time.strftime("%Y/%m/%d %H:%M:%S")return date_listresult=convert_dates(list1)
print(result)

结果:
[‘2025/01/25 10:05:00’, ‘2025/01/25 10:07:00’, ‘2025/01/25 14:07:00’, ‘2025/01/25 20:07:00’, ‘2025/01/24 16:07:00’, ‘2025/01/19 19:27:00’, ‘2025/01/21 19:27:00’, ‘2025/01/23 14:27:00’, ‘2025/01/10 17:43:00’]

http://www.lryc.cn/news/526814.html

相关文章:

  • centos9编译安装opensips 二【进阶篇-定制目录+模块】推荐
  • 初步搭建并使用Scrapy框架
  • 基于SpringBoot的软件产品展示销售系统
  • pycharm 运行远程环境问题 Error:Failed to prepare environment.
  • Redis vs. 其他数据库:深度解析,如何选择最适合的数据库?
  • HTB:Support[WriteUP]
  • 导出地图为pdf文件
  • Linux中关于glibc包编译升级导致服务器死机或者linux命令无法使用的情况
  • Golang Gin系列-8:单元测试与调试技术
  • linux如何修改密码,要在CentOS 7系统中修改密码
  • Kafka后台启动命令
  • 使用Cline+deepseek实现VsCode自动化编程
  • 【redis初阶】redis客户端
  • 【ComfyUI专栏】ComfyUI 部署Kolors
  • 深入了解 HTTP 头部中的 Accept-Encoding:gzip、deflate、br、zstd
  • 【含代码】逆向获取 webpack chunk 下的__webpack_require__ 函数,获悉所有的模块以及模块下的函数
  • 2025牛客寒假算法基础集训营2
  • 落地 ORB角点检测与sift检测
  • 16 分布式session和无状态的会话
  • SpringBoot整合Swagger UI 用于提供接口可视化界面
  • 如何实现滑动开关功能
  • 数仓的数据加工过程-ETL
  • 自动驾驶中的多传感器时间同步
  • CYT3BB_4BB:Clock system
  • C# OpenCV机器视觉:利用CNN实现快速模板匹配
  • 消息队列篇--通信协议扩展篇--二进制编码(ASCII,UTF-8,UTF-16,Unicode等)
  • Direct Preference Optimization (DPO): 一种无需强化学习的语言模型偏好优化方法
  • 跟我学C++中级篇——容器的连接
  • java求职学习day15
  • 【脚本】如何禁用谷歌浏览器自动更新