python下的日期与时间(时间格式转换、时间戳处理,时间差处理)
python下的日期与时间
一、在Python中,时间主要有三种表示形式,
1.时间戳(TimeStamp):1970年1月1日之后的秒
2.时间元组格式化形式 包含了:年、日、星期 得到time.struct_time(tm_year=2017, tm_mon=10, tm_mday=14…)
3.可视化的字符串 2017-11-11 11:44
import time
#1 时间戳:1970年1月1日之后的秒
print('1.时间戳形式:{}'.format(time.time()))
1.时间戳形式:1542765908.295993
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
2.时间戳科学的解释
最初计算机操作系统是32位,而时间也是用32位表示。32位能表示的最大值是2147483647。另外1年365天的总秒数是31536000,2147483647/31536000 = 68.1,也就是说32位能表示的最长时间是68年,而实际上到2038年01月19日03时14分07秒,便会到达最大时间,过了这个时间点,所有32位操作系统时间便会变为10000000 00000000 00000000 00000000,也就是1901年12月13日20时45分52秒,这样便会出现时间回归的现象,很多软件便会运行异常了。
到这里,我想问题的答案已经出来了:因为用32位来表示时间的最大间隔是68年,而最早出现的UNIX操作系统考虑到计算机产生的年代和应用的时限综合取了1970年1月1日作为UNIX TIME的纪元时间(开始时间),至于时间回归的现象相信随着64为操作系统的产生逐渐得到解决,因为用64位操作系统可以表示到292,277,026,596年12月4日15时30分08秒,相信我们的N代子孙,哪怕地球毁灭那天都不用愁不够用了,因为这个时间已经是千亿年以后了。
为什么是1970,因为这个设计时候是 70 年代
#2 元组格式化形式 包含了:年、日、星期 得到time.struct_time(tm_year=2017, tm_mon=10, tm_mday=14...)
print('2.元组格式化形式:{}'.format(time.gmtime()))
2.元组格式化形式:time.struct_time(tm_year=2018, tm_mon=11, tm_mday=21, tm_hour=2, tm_min=5, tm_sec=9, tm_wday=2, tm_yday=325, tm_isdst=0)
什么是时间元组?
很多Python函数用一个元组装起来的9组数字处理时间:
序号 | 字段 | 值 |
---|---|---|
0 | 4位数年 | 2008 |
1 | 月 | 1 到 12 |
2 | 日 | 1到31 |
3 | 小时 | 0到23 |
4 | 分钟 | 0到59 |
5 | 秒 | 0到61 (60或61 是闰秒) |
6 | 一周的第几日 | 0到6 (0是周一) |
7 | 一年的第几日 | 1到366 (儒略历) |
8 | 夏令时 | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
也就是struct_time元组。这种结构具有如下属性:
序号 | 属性 | 值 |
---|---|---|
0 | tm_year | 2008 |
1 | tm_mon | 1 到 12 |
2 | tm_mday | 1 到 31 |
3 | tm_hour | 0 到 23 |
4 | tm_min | 0 到 59 |
5 | tm_sec | 0 到 61 (60或61 是闰秒) |
6 | tm_wday | 0到6 (0是周一) |
7 | tm_yday | 1 到 366(儒略历) |
8 | tm_isdst | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
#3 可视化的字符串 2017-11-11 11:44
print('3.可视化的字符串:{}'.format(time.strftime("%Y-%m-%d %H:%M:%S")))
3.可视化的字符串:2018-11-21 10:05:10
python中时间日期格式化符号:
- %y 两位数的年份表示(00-99)
- %Y 四位数的年份表示(000-9999)
- %m 月份(01-12)
- %d 月内中的一天(0-31)
- %H 24小时制小时数(0-23)
- %I 12小时制小时数(01-12)
- %M 分钟数(00=59)
- %S 秒(00-59)
- %a 本地简化星期名称
- %A 本地完整星期名称
- %b 本地简化的月份名称
- %B 本地完整的月份名称
- %c 本地相应的日期表示和时间表示
- %j 年内的一天(001-366)
- %p 本地A.M.或P.M.的等价符
- %U 一年中的星期数(00-53)星期天为星期的开始
- %w 星期(0-6),星期天为星期的开始
- %W 一年中的星期数(00-53)星期一为星期的开始
- %x 本地相应的日期表示
- %X 本地相应的时间表示
- %Z 当前时区的名称
- %% %号本身
二、三种时间的转化
1.时间戳------->时间元组:
UTC是国际时,UTC+8就是国际时加八小时,是东八区时间,也就是北京时间。
#用time.localtime()方法,将一个时间戳转换为当前时区的struct_time。
time1 = time.time()
tuple1 = time.localtime(time1) # UTC + 8 时间
tuple1
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=21, tm_hour=10, tm_min=5, tm_sec=11, tm_wday=2, tm_yday=325, tm_isdst=0)
time1 = time.time()
tuple1 = time.gmtime(time1) # UTC时间
tuple1
time.struct_time(tm_year=2018, tm_mon=11, tm_mday=21, tm_hour=2, tm_min=5, tm_sec=11, tm_wday=2, tm_yday=325, tm_isdst=0)
2.时间元组-------->时间戳:
tuple2 = time.localtime()
time2 = time.mktime(tuple2)
time2
1542765912.0
3.时间元组--------->字符串:
-strftime(format[, tuple])
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
tuple3 = time.localtime()
strTime = time.strftime("%Y-%m-%d %H:%M:%S",tuple3)
strTime
‘2018-11-21 10:20:27’
strTime1 = time.strftime("%Y{y}%m{m}%d{d} %H{h}%M{m1}%S{s}",tuple3).format(y="年",m="月",d="日",h="时",m1="分",s="秒")
strTime1
'2018年11月21日 10时05分12秒'
4、asctime()方法
time.asctime([t]))
- 参数
t – 9个元素的元组(time.struct_time)或者通过函数 gmtime() 或 localtime() 返回的时间值。
- 返回值
返回一个可读的形式为"Tue Dec 11 18:07:14 2008"(2008年12月11日 周二18时07分14秒)的24个字符的字符串。
t = time.localtime()
print(type(t),t)
time.asctime(t)
<class 'time.struct_time'> time.struct_time(tm_year=2018, tm_mon=11, tm_mday=21, tm_hour=10, tm_min=5, tm_sec=13, tm_wday=2, tm_yday=325, tm_isdst=0)'Wed Nov 21 10:05:13 2018'
5、把时间戳---->time.asctime()
t=time.time()
print(type(t),t)
time.ctime(time.time())
<class 'float'> 1542765913.8286655'Wed Nov 21 10:05:13 2018'
三、时间戳计算时间差
#根据时间戳来计算(注意时间戳时秒还是毫秒)#1、天数
time.time()+86400*7 #当前时间的后7天#2、小时
time.time()+3600*7 #当前时间的后7小时#3、分钟
time.time()+60*7 #当前时间的后7分钟
1542766334.2900052
三、字符串形式计算时间差
#字符串时间差
import datetimestart ="2018-06-19 17:37:31"
end = "2019-07-30 17:37:31"
start=time.strptime(start, "%Y-%m-%d %H:%M:%S")
end=time.strptime(end, "%Y-%m-%d %H:%M:%S")
userStart=datetime.datetime(start[0],start[1],start[2])
userEnd=datetime.datetime(end[0],end[1],end[2])
print ((userEnd-userStart).days) # 0 天数
# print (end-start).total_seconds() # 30.029522 精确秒数
# print (end-start).seconds # 30 秒数
# print (end-start).microseconds # 29522 毫秒数
406
<div align="center">
Python不断更新,如果发现有最新方法欢迎留言交流。同时欢迎加入Python资源分享Q群:867300100
python下的日期与时间(时间格式转换、时间戳处理,时间差处理)相关推荐
- java中如何把时间封装成类,java-如何在不使用任何不推荐使用的类的情况下将日期从一种格式转换为另一种格式的日期对象?...
java-如何在不使用任何不推荐使用的类的情况下将日期从一种格式转换为另一种格式的日期对象? 我想将date1格式的日期转换为date2格式的日期对象. SimpleDateFormat simple ...
- 原生html5时间组件,JFinal遇到了原生Html5时间组件格式转换问题怎么处理?
今天JBolt种子用户群里有人提问,JFinal针对原生Html5的日期时间选择组件的格式转换支持有问题,报错. 于是我在JBolt的Demo中加入了这些去测试一下,这里使用的都是原生Html组件. ...
- stata:时间变量格式转换
stata:时间变量格式转换 时间序列是经济金融类研究最常用的数据类型,时间变量的转换和设定一般是初学者最为头大的问题,本文在这里详尽的展示有关时间变量处理.转换以及格式设定的相关问题,话不多说直奔主 ...
- 字符串与时间的格式转换
字符串与时间的格式转换 这里可以使用hutool的DateUtil进行转换,支持多种格式的时间进行转换 import cn.hutool.core.date.DateTime; import cn.h ...
- JAVA-LocalDateTime时间格式化,转换时间戳和源码分析
JAVA-LocalDateTime时间格式化,转换时间戳和源码分析 LocalDateTime LocalDateTime作为java8新加的时间类型,也是后面开发中常用的时间类型.因为没用过之前的 ...
- # Python 字符串数据(二进制编码数据)格式转换及解析
Python 字符串数据(二进制编码数据)格式转换及解析 最近在linux上部署python,希望可以用python来调用串口,同时可以实现数据的格式转换. 在python这个做格式化转换不熟悉,花了 ...
- 【Python】日期时间类型格式与时间戳转换
获取当前时间 time.time():返回当前时间(系统时间)的时间戳 时间类型转换 时间类型 time库中定义的时间结构体struct_time 表示日期.时间的字符串 从UTC零时区的1970年1 ...
- sql 日期时间函数+格式转换
<日期时间函数> (可参考下列表格) 转换函数 to_date() 作用将字符类型按一定格式转化为日期类型: 具体用法:to_date('2004-11-27','yyyy-mm-dd') ...
- python改变日期的输出格式,关于python:解析日期字符串并更改格式
我有一个日期字符串,格式为"2010年2月15日周一".我想把格式改为"15/02/2010".我该怎么做? 所有这些的副本:stackoverflow.com ...
最新文章
- 【转】Flex Application 初始化顺序
- OpenCV4.5.x DNN + YOLOv5 C++推理
- 小朋友你是否对java中的static满脸问号
- 如何让eclipse恢复默认布局
- 二叉堆详解实现优先级队列
- LeetCode之Remove Duplicates from Sorted Array II
- 10 - java 权限修饰符
- roboware实用功能
- 指定单元格里面的,内容发生变化,触发事件,调用VBA代码。
- 【分享】如果我没有那么优秀,我研究生阶段选择机器学习方向还有出路吗?...
- python tornado websocket_Python:Tornado 第三章:WebSocket概念及应用:第一节:WebSocket概念...
- python小星_Python学习【第3篇】:列表魔法
- 计算机专业电路基础高考试卷,计算机专业电路基础试题(4页)-原创力文档
- git SSH密钥生成及部署
- oa软件测试用例,OA系统测试用例.doc
- MATLAB | 画彩色图像的直方图,改对比度,计算均值、方差和信息熵
- [wordpress搬家]马来西亚 你好
- MLX90640开发笔记(十)成果展示-红眼睛相机
- c语言数学函数库根号程序,C语言初学 数学中带根号的复杂计算问题
- Unity功能点---模拟枪械射击时的后坐力