Python中的日期时间处理详解


Posted in Python onNovember 17, 2016

Python中关于时间、日期的处理库有三个:time、datetime和Calendar,其中datetime又有datetime.date、datetime.time、datetime.datetime三个类。而时间又可以分为时间戳、本地时间和UTC时间(世界标准时间)。是不是听起来有点乱?那么他们相互之间有什么区别?有什么联系?又如何转换呢?

time模块

在time模块中,时间有三种表现形式:

时间戳,一般指Unix时间戳,是从1970年开始到现在的秒数。
本地时间的struct_time形式:一个长度为11的命名元组,第一位为年,第二位为月....
UTC时间的struct_time形式:一个长度为11的命名元组,类似于上个,只不过为UTC时间
其中后两者的类型一致,区别在于一个是本地时间(localtime),一个是utc时间。

各种时间形式的获取方式:

print("time stamp:", time.time())     # 时间戳:1479193181.829338

print("local time:", time.localtime())  # struct_time类型的本地时间
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=15, tm_hour=14, tm_min=59, tm_sec=41, tm_wday=1, tm_yday=320, tm_isdst=0)

print("utc time:", time.gmtime())     # struct_time类型的utc时间
time.struct_time(tm_year=2016, tm_mon=11, tm_mday=15, tm_hour=6, tm_min=59, tm_sec=41, tm_wday=1, tm_yday=320, tm_isdst=0)

这里可以看出,本地时间(北京时间)和UTC时间相差8个小时。

各种时间形式的转换:

time_stamp = time.time()        # 时间戳
local_time = time.localtime(time_stamp)# 时间戳转struct_time类型的本地时间
utc_time = time.gmtime(time_stamp)   # 时间戳转struct_time类型的utc时间

time_stamp_1 = time.mktime(local_time) # struct_time类型的本地时间转时间戳
time_stamp_2 = calendar.timegm(utc_time)# struct_time类型的utc时间转时间戳
print(time_stamp, time_stamp_1, time_stamp_2)

各种时间形式和字符串之间的转换:

print(time.ctime(time_stamp))    # 时间戳转字符串(本地时间字符串)

print(time.asctime(local_time))   # struct_time类型的本地时间转字符串
print(time.asctime(utc_time))    # struct_time类型的utc时间转字符串

# struct_time类型的本地时间转字符串:自定义格式
print(time.strftime("%Y-%m-%d, %H:%M:%S, %w", local_time))
# struct_time类型的utc时间转字符串:自定义格式
print(time.strftime("%Y-%m-%d, %H:%M:%S, %w", utc_time))

struct_time = time.strptime("2016-11-15, 15:32:12, 2", "%Y-%m-%d, %H:%M:%S, %w")    # 字符串转struct_time类型

Python中的日期时间处理详解

datetime模块

接下来再看datetime模块。该模块中包含4个主要的类:

datetime.time:时间类,只包含时、分、秒、微秒等时间信息。
datetime.date:日期类,只包含年、月、日、星期等日期信息。
datetime.datetime:日期时间类,包含以上两者的全部信息。
datetime.timedelta:时间日期差值类,用来表示两个datetime之间的差值。
关于各个类的基本用法比较简单,建议看官方文档:datetime module

这里主要说一下datetime.datetime类的用法,其他两个的用法类似,只有轻微差别:

a_datetime_local = datetime.datetime.now() # 获取datetime.datetime类型的本地时间
a_datetime_utc = datetime.datetime.utcnow() # 获取datetime.datetime类型的utc时间

# datetime.datetime类型转字符串
print(a_datetime_local.strftime("%Y-%m-%d, %H:%M:%S, %w")) 
# datetime.datetime类型转字符串
print(a_datetime_utc.strftime("%Y-%m-%d, %H:%M:%S, %w"))  

a_datetime = datetime.datetime.strptime("2016-11-15, 15:32:12, 2", "%Y-%m-%d, %H:%M:%S, %w")  # 字符串转

datetime.datetime格式

datetime类型和时间戳、struct_time类型的相互转换

datetime.datetime和时间戳、struct_time之间,也能够相互转换:

time_stamp = a_datetime_local.timestamp()  # datetime类型转时间戳
print(time_stamp)

a_datetime_local = datetime.datetime.fromtimestamp(time.time())   # 时间戳转datetime.datetime类型的本地时间
a_datetime_utc = datetime.datetime.utcfromtimestamp(time.time())  # 时间戳转datetime.datetime类型的utc时间
print(a_datetime_local, a_datetime_utc)

print(a_datetime_local.timetuple())   # datetime类型转struct_time类型
print(a_datetime_utc.utctimetuple())  # datetime类型转struct_time类型

Python中的日期时间处理详解

本文主要讲了各种时间、日期类型的基本用法,以及他们之间相互转换的方法,以及他们和字符串之间相互转换的方法。

老规矩,文中代码已上传至github:https://github.com/xianhu/LearnPython

本站备份下载地址:http://xz.3water.com:81/201611/yuanma/LearnPython(3water.com).zip

Python 相关文章推荐
python实现计算倒数的方法
Jul 11 Python
Python入门_浅谈逻辑判断与运算符
May 16 Python
flask使用session保存登录状态及拦截未登录请求代码
Jan 19 Python
python selenium 对浏览器标签页进行关闭和切换的方法
May 21 Python
pip命令无法使用的解决方法
Jun 12 Python
python自动发送邮件脚本
Jun 20 Python
python利用跳板机ssh远程连接redis的方法
Feb 19 Python
Python3中列表list合并的四种方法
Apr 19 Python
Python秒算24点实现及原理详解
Jul 29 Python
详解Python中的正斜杠与反斜杠
Aug 09 Python
解决 jupyter notebook 回车换两行问题
Apr 15 Python
python 对象真假值的实例(哪些视为False)
Dec 11 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 #Python
Python进阶篇之字典操作总结
Nov 16 #Python
Python极简代码实现杨辉三角示例代码
Nov 15 #Python
Python实现将不规范的英文名字首字母大写
Nov 15 #Python
利用Python开发实现简单的记事本
Nov 15 #Python
Python解析excel文件存入sqlite数据库的方法
Nov 15 #Python
听歌识曲--用python实现一个音乐检索器的功能
Nov 15 #Python
You might like
用php解析html的实现代码
2011/08/08 PHP
Destoon实现多表查询示例
2014/08/21 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
php中Snoopy类用法实例
2015/06/19 PHP
innerHTML,outerHTML,innerText,outerText的用法及区别解析
2013/12/16 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
浅谈javascript alert和confirm的美化
2016/12/15 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
纯JavaScript实现实时反馈系统时间
2017/10/26 Javascript
JavaScript查看代码运行效率console.time()与console.timeEnd()用法
2019/01/18 Javascript
JavaScript实现单英文金山打字通
2020/07/24 Javascript
Vue+iview+webpack ie浏览器兼容简单处理
2019/09/20 Javascript
微信小程序实现星级评价
2019/11/20 Javascript
基于jsbarcode 生成条形码并将生成的条码保存至本地+源码
2020/04/27 Javascript
react-router-dom 嵌套路由的实现
2020/05/02 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
[00:26]TI7不朽珍藏III——冥界亚龙不朽展示
2017/07/15 DOTA
[01:01:43]EG vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.24
2018/08/25 DOTA
Python pickle模块用法实例
2015/04/14 Python
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
详解django自定义中间件处理
2018/11/21 Python
python实现简单flappy bird
2018/12/24 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
基于python调用psutil模块过程解析
2019/12/20 Python
Python3使用tesserocr识别字母数字验证码的实现
2021/01/29 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
AmazeUI 导航条的实现示例
2020/08/14 HTML / CSS
NOTINO英国:在线购买美容和香水
2020/02/25 全球购物
新疆民族团结演讲稿
2014/08/27 职场文书
2015年幼儿教师个人工作总结
2015/05/20 职场文书
pytest配置文件pytest.ini的详细使用
2021/04/17 Python
如何用JavaScript学习算法复杂度
2021/04/30 Javascript
如何在CSS中绘制曲线图形及展示动画
2021/05/24 HTML / CSS