字符串转换为日期

问题

你的应用程序接受字符串格式的输入,但是你想将它们转换为 datetime 对象以便在上面执行非字符串操作。

解法

使用 Python 的标准模块 datetime 可以很容易的解决这个问题。比如:

>>> from datetime import datetime
>>> text = '2012-09-20'
>>> y = datetime.strptime(text, '%Y-%m-%d')
>>> z = datetime.now()
>>> diff = z - y
>>> diff
datetime.timedelta(3, 77824, 177393)
>>>

讨论

datetime.strptime() 方法支持很多的格式化代码,比如 %Y 代表 4 位数年份, %m 代表两位数月份。还有一点值得注意的是这些格式化占位符也可以反过来使用,将日期输出为指定的格式字符串形式。

比如,假设你的代码中生成了一个 datetime 对象,你想将它格式化为漂亮易读形式后放在自动生成的信件或者报告的顶部:

>>> z
datetime.datetime(2012, 9, 23, 21, 37, 4, 177393)
>>> nice_z = datetime.strftime(z, '%A %B %d, %Y')
>>> nice_z
'Sunday September 23, 2012'
>>>

还有一点需要注意的是, strptime() 的性能要比你想象中的差很多,因为它是使用纯 Python 实现,并且必须处理所有的系统本地设置。如果你要在代码中需要解析大量的日期并且已经知道了日期字符串的确切格式,可以自己实现一套解析方案来获取更好的性能。比如,如果你已经知道所以日期格式是 YYYY-MM-DD ,你可以像下面这样实现一个解析函数:

from datetime import datetime
def parse_ymd(s):year_s, mon_s, day_s = s.split('-')return datetime(int(year_s), int(mon_s), int(day_s))

实际测试中,这个函数比 datetime.strptime() 快 7 倍多。如果你要处理大量的涉及到日期的数据的话,那么最好考虑下这个方案!

《Python Cookbook 3rd》笔记(3.15):字符串转换为日期相关推荐

  1. python cookbook 读书笔记2(字符串处理2)

    1.8检查字符集中是否包含某字符集中的字符,在以下几个例子中,也就是检查seq是否包含aset中的项,各函数中Any结尾是部分包含,也就是只要有其中元素就返回true,All结尾的是全部包含,必须包含 ...

  2. 《Python Cookbook 3rd》笔记汇总

    文章目录 一.数据结构 二.字符串和文本 三.数字.日期和时间 四.迭代器与生成器 五.文件与IO 一.数据结构 标题 关键词 1.1:拆分序列后赋值给多个变量 可迭代对象.拆分赋值 1.2:拆分任意 ...

  3. 《Python Cookbook 3rd》笔记(1.4):查找最大或最小的N个元素

    <Python Cookbook 3rd>1.4:查找最大或最小的N个元素 问题 怎样从一个集合中获得最大或者最小的N个元素列表? 解法 heapq 模块有两个函数:nlargest()和 ...

  4. 《Python cookbook》笔记二

    <Python cookbook>笔记二 第二章 字符串和文本 -使用多个界定符分割字符串- 你需要将一个字符串分割为多个字段,但是分隔符 (还有周围的空格) 并不是固定 的. # str ...

  5. Machine Learning with Python Cookbook 学习笔记 第8章

    Chapter 8. Handling Images 前言 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放 ...

  6. Machine Learning with Python Cookbook 学习笔记 第6章

    Chapter 6. Handling Text 本笔记是针对人工智能典型算法的课程中Machine Learning with Python Cookbook的学习笔记 学习的实战代码都放在代码压缩 ...

  7. Python Cookbook 3rd Edition Documentation

    Python Cookbook 3rd Edition Documentation 文章目录 第一章:数据结构和算法 1.1 解压序列赋值给多个变量 问题 解决方案 讨论 1.2 解压可迭代对象赋值给 ...

  8. Machine Learning with Python Cookbook 学习笔记 第9章

    Chapter 9. Dimensionality Reduction Using Feature Extraction 前言 本笔记是针对人工智能典型算法的课程中Machine Learning w ...

  9. python模块datetime将字符串转换为日期

    python模块datetime将字符串转换为日期 python datetime 模块提供用于处理日期和时间的类. 在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格 ...

最新文章

  1. usr share里没有mysql_无法在ubuntu 12.04上安装mysql,找不到消息文件’/usr/share/mysql/errmsg.sys’...
  2. 【青少年编程】黄羽恒:平行空间
  3. MySQL5.7新特性:lossless replication 无损复制
  4. Centos源码安装Cmake
  5. 紧急通知,读者服务群大调整
  6. 选择MPLS或SD-WAN用于组织网络部署的几大原因—Vecloud微云
  7. 测试开发面试准备之HTTP协议-一次完整的Http请求过程
  8. 弱引用的用途:在底层C++对象被上层python脚本对象使用时(转)
  9. Linux记录-进程数和句柄数调整
  10. HelloWorldProxy is a factory bean
  11. 验证DetailsView插入数据不为空
  12. 网络研讨室_即将举行的网络研讨会:调试生产中Java的5种最佳实践
  13. string类有可以调换方向的函数吗_深度剖析C++中的inline函数
  14. mysql关联查询 事务 索引 外键
  15. 织梦(安装,模板,基本标签)
  16. ZOJ 3430 Detect the Virus
  17. Linux复制文件内容到另一个文件
  18. React生命周期钩子函数
  19. 中投民生:“巨无霸”上市估值2000亿美金直接超越茅台
  20. 2020最新版前端学习路线图--微信小程序制作原来如此简单

热门文章

  1. ARM中断分析之三:WinCE驱动的中断分析
  2. WINCE 加入驱动DLL步骤
  3. linux修改grub权限,linux下肿么修改grub.cfg
  4. 怎么在安卓布局里设置滚动字体_Get新技能|如何在手机上设置文字版拼音?
  5. oracle事务数统计,Oracle 查询事务数
  6. php音视频同步,视频画面和声音不同步?视频声音画面同步工具|软件
  7. python解释型语言的区别_什么是解释型语言?
  8. python钻石数据分析_数据分析该用什么工具?
  9. SharePoint无代码工作流设计开发实例——交通费报销流程(三)
  10. 一步步编写操作系统 71 直接操作显卡,编写自己的打印函数71-74