设为首页 加入收藏

TOP

Python时间日期格式化之time与datetime模块总结(一)
2018-12-23 22:08:24 】 浏览:322
Tags:Python 时间 日期 格式 time datetime 模块 总结

        首先必须做一点理论准备,不然待会都不知道为什么会有这些函数。介绍3个概念:


UTC time Coordinated Universal Time,世界协调时,又称格林尼治天文时间、世界标准时间。与UTC time对应的是各个时区的local time,也就是本地时间,例如我们的北京时间。


  epoch time表示时间开始的起点;它是一个特定的时间,不同平台上这个时间点的值不太相同,对于Unix而言,epoch time为 1970-01-01 00:00:00 UTC。


  timestamp(时间戳) 也称为Unix时间 或 POSIX时间;它是一种时间表示方式,表示从格林尼治时间1970年1月1日0时0分0秒开始到现在所经过的毫秒数,其值为float类型。 但是有些编程语言的相关方法返回的是秒数,例如我们的天下第一编程语言-Python大法就是这样(请不要反驳我)。所谓的时间戳timestamp就是当前时间与格林尼治时间1970年1月1日0时0分0秒之间过了多少秒。


  相应的,日期时间就有三种表示方法:


  1)stamptime时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。stamptime表现为一个float类型数据。


  2)struct_time时间元组,共有九个元素组。stamptime时间戳和格式化时间字符串之间的转化必须通过struct_time才行,所以struct_time时间元组时3中时间表示的中心。


  3)format time 格式化时间,已格式化的结构字符串使时间更具可读性。包括自定义格式和固定格式。


  那么,下面要说的就是怎么获取这三个时间,并进行这三个时间之间的转化。先总结一下time模块。


  先放两个图:


 


  time模块中,几乎所有时间获取与格式转化的函数都在上图中了,只要理清了这幅图的关系,那么time模块就不再是问题。图中,蓝色方块表示那三种时间格式,箭头表示时间的转化。下面,重点来了:


  1)获取当前时间的方法只有一个,那就是通过上图中的函数1——time.time()。也就是说,要想获取当前时间,只能通过这个方法,而且获取的是时间戳格式的时间。想直接获取当前时间的时间元组格式或格式化字符串?没门,只能老老实实转化。


  2)当传入默认参数时,指的是使用当前时间作为参数值。图中带黄色底纹的都是设有默认值的参数(虽然默认值为None),函数2、3不传入该参数时,系统会自动获取当前时间的时间戳作为该参数值。而函数5则是系统会自动获取当前时间的时间元组作为该参数值,不是不能直接获取当前时间的时间元组吗?是的,但系统会先获取当前时间的时间戳,然后转化为时间元组。上图中只有向左的箭头所代表的函数才有默认值,就是因为向右才能由时间戳转化得到需要的时间格式。


  3) localtime(函数2)和gmtime(函数3)都可以实现将时间戳转化为时间元组,但是,localtime转化的是本地时间,gmtime转为的是世界标准时间。


  4)asctime(函数7)和ctime(函数8)只能转为为%a %b %d %H:%M:%S %Y格式的字符串时间。不传入参数时,用的也是当前时间。


  5)struct_time元组元素结构:


  struct_time属性值的获取方式有两种:


  6)format time结构化表示:


  在代码中实践一下上面的内容:


  1)time.time()


>>> import time
>>> time.time()
1545216390.84174


Python时间日期格式化之time与datetime模块总结


  2)time.localtime()


>>> time.localtime() # 不传入参数
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=19, tm_hour=18, tm_min=47, tm_sec=30, tm_wday=2, tm_yday=353, tm_isdst=0)
>>> time.localtime(time.time()) # 传入当前时间
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=19, tm_hour=18, tm_min=47, tm_sec=39, tm_wday=2, tm_yday=353, tm_isdst=0)
>>> time.localtime(1544200000.1232) # 传入其他时间戳
time.struct_time(tm_year=2018, tm_mon=12, tm_mday=8, tm_hour=0, tm_min=26, tm_sec=40, tm_wday=5, tm_yday=342, tm_isdst=0)


Python时间日期格式化之time与datetime模块总结


  4)time.mktime()


>>> time.mktime(time.localtime())
1545216822.0


  5)strftime(format, p_tuple=None)


>>> time.strftime('%y-%m-%d' , time.localtime())
'18-12-19'
>>> time.strftime('%Y-%m-%d' , time.localtime())
'2018-12-19'
>>> time.strftime('%Y年%m月%d日 %M时%I分%S秒' , time.localtime())
'2018年12月19日 54时06分20秒'


 Python时间日期格式化之time与datetime模块总结


  7)asctime(p_tuple=None)


>>> time.asctime() # 不传入参数,默认是当前时间
'Wed Dec 19 18:59:22 2018'
>>> time.asctime(time.localtime(1544278402.1804464))
'Sat Dec  8 22:13:22 2018'


  8)ctime(seconds=None)


>>> time.ctime() # 不传入参数
'Wed Dec 19 19:00:05 2018'
>>> time.ctime(1544278402.1804464)
'Sat Dec  8 22:13:22 2018'


Python时间日期格式化之time与datetime模块总结


  datetime模块是time模块的进一步封装,对用户更加友好,在时间各属性的获取上回更加方便一些,当然,在效率上会略微低一些。datetime模块的功能主要都几种在datetime、date、time、timedelta、tzinfo五个类中。这五个类功能如下表所示:


  先来说说date类,其定义如下:


  year, month 和 day都是是必须参数,各参数的取值范围为:


  定义格式:


  hour为必须参数,其他为可选参数。各参数的取值范围为:


  datetime类的定义如下:


  year, month 和 day是必须要传递的参数, tzinfo可以是None或tzinfo子类的实例。


  各参数的取值范围为:


  如果一个参数超出了这些范围,会引起ValueError异常。


  类方法和属性:


  对象方法和属性:


  上面是date、time、datetime三个类的方法和属性,关于这三个类,使用方法上基本与time模块差不多,看方法名基本就一目了

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python网络编程之socket模块基础.. 下一篇C语言输出菱形代码及解析

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目