亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

精通 Python strptime():准确解析日期字符串

Python strptime():将字符串转换为 datetime 对象

本指南展示如何使用 Python 的 datetime.strptime() 方法从字符串创建 datetime 对象,包含实用示例和完整的格式代码参考。

视频:Python 中的日期和时间处理

观看官方 Python 教程以加深对 datetime 处理的理解。

strptime() 方法根据指定格式从字符串创建 datetime 对象。

注意: 并非所有字符串都能解析;输入必须与格式代码完全匹配。


示例 1:转换简单的日期字符串

from datetime import datetime

date_string = "21 June, 2018"
print("date_string =", date_string)
print("date_string 类型 =", type(date_string))
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
print("date_object 类型 =", type(date_object))

运行程序后,输出如下:


date_string = 21 June, 2018
date_string 类型 = <class 'str'>
date_object = 2018-06-21 00:00:00
date_object 类型 = <class 'datetime.datetime'>

strptime() 如何工作

strptime() 类方法接受两个参数:

基于这些输入,该方法返回一个表示相同时间点的 datetime 对象。

在上面的示例中,格式代码 %d %B, %Y 表示:


示例 2:解析歧义日期

from datetime import datetime

dt_string = "12/11/2018 09:15:32"  # 假设为 日/月/年 格式
dt_object1 = datetime.strptime(dt_string, "%d/%m/%Y %H:%M:%S")
print("dt_object1 =", dt_object1)

# 假设为 月/日/年 格式
dt_object2 = datetime.strptime(dt_string, "%m/%d/%Y %H:%M:%S")
print("dt_object2 =", dt_object2)

程序输出:


dt_object1 = 2018-11-12 09:15:32
dt_object2 = 2018-12-11 09:15:32

格式代码完整列表

下表汇总了可用于 strptime() 的所有指令。完整文档请参考 Python 官方 datetime 模块指南。

指令含义示例
%a星期名称缩写Sun, Mon, ...
%A完整星期名称Sunday, Monday, ...
%w星期几的十进制数0, 1, ..., 6
%d月份中的第几天 (零填充)01, 02, ..., 31
%-d月份中的第几天 (无填充)1, 2, ..., 30
%b月份名称缩写Jan, Feb, ..., Dec
%B完整月份名称January, February, ...
%m月份数字 (零填充)01, 02, ..., 12
%-m月份数字 (无填充)1, 2, ..., 12
%y不带世纪的年份 (零填充)00, 01, ..., 99
%-y不带世纪的年份 (无填充)0, 1, ..., 99
%Y带世纪的年份2013, 2019, ...
%H小时 (24 小时制, 零填充)00, 01, ..., 23
%-H小时 (24 小时制, 无填充)0, 1, ..., 23
%I小时 (12 小时制, 零填充)01, 02, ..., 12
%-I小时 (12 小时制, 无填充)1, 2, ..., 12
%p本地化的 AM 或 PMAM, PM
%M分钟 (零填充)00, 01, ..., 59
%-M分钟 (无填充)0, 1, ..., 59
%S秒 (零填充)00, 01, ..., 59
%-S秒 (无填充)0, 1, ..., 59
%f微秒 (零填充)000000 – 999999
%zUTC 偏移量 (+HHMM 或 –HHMM)
%Z时区名称
%j一年中的第几天 (零填充)001, 002, ..., 366
%-j一年中的第几天 (无填充)1, 2, ..., 366
%U周数 (周日为第一天)00, 01, ..., 53
%W周数 (周一为第一天)00, 01, ..., 53
%c本地化的日期和时间Mon Sep 30 07:06:05 2013
%x本地化的日期09/30/13
%X本地化的时间07:06:05
%%字面上的百分号%

常见错误:ValueError

如果字符串与格式代码不匹配,strptime() 会抛出 ValueError。例如:

from datetime import datetime

date_string = "12/11/2018"  # 错误格式 – 期望 日 月 年
date_object = datetime.strptime(date_string, "%d %m %Y")
print("date_object =", date_object)

运行此代码将产生:


ValueError: time data '12/11/2018' does not match format '%d %m %Y'

推荐阅读: Python strftime()

Python

  1. Python关键字与标识符:掌握保留字与命名规范
  2. 精通Python数据类型:实战指南
  3. 精通Python运算符:全面指南
  4. 精通Python Pass语句:实战指南
  5. 精通Python函数参数:位置、关键字与默认参数
  6. 精通 Python 字典:创建、操作与进阶技巧
  7. 精通 Python 迭代器:工作原理与自定义构建
  8. Python 闭包详解:嵌套函数如何捕获变量
  9. Python 正则表达式 (re 模块) 实战指南
  10. 精通 Python datetime:日期、时间与时区实战指南
  11. 精通 Python time 模块:函数、结构体与实战示例
  12. 精通 Python time.sleep():最佳实践、多线程与实战案例