Python 时间戳和日期相互转换
转载地址:http://liyangliang.me/posts/2012/10/python-timestamp-to-timestr/
在写Python的时候经常会遇到时间格式的问题,每次都是上 google 搜索然后找别人的博客或网站来参考。现在自己简单总结一下,方便以后查询。
首先就是最近用到的时间戳(timestamp)和时间字符串之间的转换。所谓时间戳,就是从 1970 年 1 月 1 日 00:00:00 到现在的秒数。那关于为什么是1970年这个特殊的日期,这篇文章有个简单明了的介绍:
在Python里,时间戳可以通过 time
模块里的 time()
方法获得,比如:
In [1]: import time
In [2]: time.time()
Out[2]: 1350816710.8050799
这个值对人来说是不友好的,所以有时候需要转换为一定的格式方便人理解。我们可以调用 time.strftime()
函数来达到这个目的。根据 strftime()
函数的文档,我猜这个名称应该是 “string format time” 的简写,也就是字符串格式的时间。这个方法需要两个参数,其中一个是时间格式,一个是一个9元组,第二个参数可选,默认为 time.localtime()
的返回值。而那个9元组其实是 struct_time
,由9个元素组成的元组(tuple),也是一种时间表示的格式。比如
In [5]: import time
In [6]: time.localtime()
Out[6]: time.struct_time(tm_year=2012, tm_mon=10, tm_mday=21, tm_hour=19, tm_min=4, tm_sec=25, tm_wday=6, tm_yday=295, tm_isdst=0)
具体的含义,前6个应该很明显,那么后三个分别是:weekday(0-6),在一年中的第几天(1-366),是否是夏令时(默认-1)。现在再来看看如何把时间戳转换为指定格式的字符串形式。很简单,直接上代码
In [8]: import time
In [9]: st = time.localtime(1350816710.8050799)
In [10]: time.strftime('%Y-%m-%d %H:%M:%S', st)
Out[10]: '2012-10-21 18:51:50'
先用 localtime()
把时间戳转换为 struct_time
, 然后传给 strftime
转换为指定格式的字符串。那么反过来呢? 同样需要先转换为 struct_time
,这个工作由 time.strptime()
函数完成。strptime
中的 p
应该是 parse 的意思,原型是:
strptime(string, format) -> struct_time
把字符串形式的时间按照指定格式解析,转换为 struct_time
。然后传给time.mktime()
完成最后的工作,整个过程是:
In [12]: import time
In [13]: st = time.strptime('2012-10-21 18:51:50', '%Y-%m-%d %H:%M:%S')
In [14]: time.mktime(st)
Out[14]: 1350816710.0
最后,有两篇参考文章:
- Python中时间戳与时间字符串互相转化: http://www.coder4.com/archives/2239
- Python中time模块详解(很好):http://qinxuye.me/article/details-about-time-module-in-python/
最新文章
- C++内存对齐总结
- JS继承类相关试题
- grep中正则匹配的使用
- Flex http请求
- oracle with as
- 清橙OJ 1082 查找第K小元素 -- 快速排序
- AngularJS track by $index引起的思考
- SQL之用户自定义函数
- UESTC_王之迷宫 2015 UESTC Training for Search Algorithm &; String<;Problem A>;
- Hadoop1.0.3安装部署
- angular-utils-ui-breadcrumbs使用心得
- MySQL慢查询优化 EXPLAIN详解
- [Swift]LeetCode876. 链表的中间结点 | Middle of the Linked List
- Python中编码和字符串
- java数据结构 • 面向对象 • 异常 • 随机数&#183;时间
- Win10 C盘桌面文件右上方的两个蓝色箭头解决方案
- ngx-echart地图
- EditPlus查找替换
- 雷林鹏分享:C# 运算符
- 十一、springboot(六)整合Thymeleaf
热门文章
- java——类的封装
- 4.ctf实战题
- 732. My Calendar III (prev)
- How to use unity CreateExternalTexture on Android?
- [Xcode 实际操作]五、使用表格-(11)调整UITableView的单元格顺序
- MySQL最佳客户端工具 -- SQLyog 13.1.1.0 安装与注册
- IT兄弟连 JavaWeb教程 jQuery中其他AJAX支持的函数
- (三)siege的使用
- Java 基础类库
- Javascript中常用方法简介