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 相关文章推荐
python3.0 字典key排序
Dec 24 Python
Python写的PHPMyAdmin暴力破解工具代码
Aug 06 Python
python下MySQLdb用法实例分析
Jun 08 Python
给Python入门者的一些编程建议
Jun 15 Python
Python安装第三方库及常见问题处理方法汇总
Sep 13 Python
对python 数据处理中的LabelEncoder 和 OneHotEncoder详解
Jul 11 Python
使用Python 正则匹配两个特定字符之间的字符方法
Dec 24 Python
python-django中的APPEND_SLASH实现方法
Jun 21 Python
Django Rest framework权限的详细用法
Jul 25 Python
Python 实现的 Google 批量翻译功能
Aug 26 Python
python 变量初始化空列表的例子
Nov 28 Python
基于python3实现倒叙字符串
Feb 18 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
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
2009/03/13 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
PHP数据类型之布尔型的介绍
2013/04/28 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
微信小程序开发实战教程之手势解锁
2016/11/18 Javascript
JS简单获取当前年月日星期的方法示例
2017/02/07 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
分分钟学会vue中vuex的应用(入门教程)
2017/09/14 Javascript
详解微信小程序审核不通过的解决方法
2018/01/17 Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
2019/06/25 Javascript
Taro UI框架开发小程序实现左滑喜欢右滑不喜欢效果的示例代码
2020/05/18 Javascript
bootstrap-table后端分页功能完整实例
2020/06/01 Javascript
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
TensorFlow中权重的随机初始化的方法
2018/02/11 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
详解python--模拟轮盘抽奖游戏
2019/04/12 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
高一自我鉴定
2013/12/17 职场文书
高中政治教学反思
2014/01/18 职场文书
工艺员岗位职责
2014/02/11 职场文书
买卖协议书范本
2014/04/21 职场文书
教育见习报告范文
2014/11/03 职场文书
2014年减负工作总结
2014/12/10 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
消夏晚会主持词
2015/06/30 职场文书
保安辞职申请书应该怎么写?
2019/07/15 职场文书
Python爬虫实战之爬取携程评论
2021/06/02 Python
关于JavaScript回调函数的深入理解
2021/06/27 Javascript
Python中文纠错的简单实现
2021/07/07 Python
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers