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中使用base64模块处理字符编码的教程
Apr 28 Python
python如何对实例属性进行类型检查
Mar 20 Python
Python输入二维数组方法
Apr 13 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
Jun 19 Python
Python实现iOS自动化打包详解步骤
Oct 03 Python
Python lambda表达式用法实例分析
Dec 25 Python
Django实现学生管理系统
Feb 26 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
Python帮你识破双11的套路
Nov 11 Python
Python读取YAML文件过程详解
Dec 30 Python
使用Pytorch来拟合函数方式
Jan 14 Python
Python实现手绘图效果实例分享
Jul 22 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
YII实现分页的方法
2014/07/09 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
46 个非常有用的 PHP 代码片段
2016/02/16 PHP
php强制下载文件函数
2016/08/24 PHP
ThinkPHP5.0框架控制器继承基类和自定义类示例
2018/05/25 PHP
JS对文本框值的判断示例
2014/03/10 Javascript
JavaScript中length属性的使用方法
2015/06/05 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
在JavaScript中使用JSON数据
2016/02/15 Javascript
纯js代码制作的网页时钟特效【附实例】
2016/03/30 Javascript
jquery实现百叶窗效果
2017/01/12 Javascript
js鼠标跟随运动效果
2017/03/11 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
vue-cli监听组件加载完成的方法
2018/09/07 Javascript
修改Vue打包后的默认文件名操作
2020/08/12 Javascript
antd-日历组件,前后禁止选择,只能选中间一部分的实例
2020/10/29 Javascript
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
在Python中表示一个对象的方法
2019/06/25 Python
基于python的Paxos算法实现
2019/07/03 Python
Tensorflow模型实现预测或识别单张图片
2019/07/19 Python
中国最大的团购网站:聚划算
2016/09/21 全球购物
Marc Jacobs彩妆官网:Marc Jacobs Beauty
2017/07/03 全球购物
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
恒华伟业笔试面试题
2015/02/26 面试题
毕业生求职的求职信
2013/12/05 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
信息专业大学生自我评价分享
2014/01/17 职场文书
优秀团员事迹材料1500字
2014/08/31 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
合同纠纷调解书
2015/05/20 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
小学语文继续教育研修日志
2015/11/13 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
python随机打印成绩排名表
2021/06/23 Python
Java8利用Stream对列表进行去除重复的方法详解
2022/04/14 Java/Android