1. time模块
计算机的系统时钟设置为特定的日期、时间和时区。内置的 time 模块让 Python 程序能读取系统时钟的当前时间。在 time 模块中, time.time()和 time.sleep()函数是最有用的模块。
1.1 time.time()
time.time()函数返回自1970 年 1 月 1 日 0 点以来的秒数,是一个浮点值(UNIX 纪元时间戳)。
1.2 time.sleep()
如果需要让程序暂停一下,就调用 time.sleep()函数,并传入希望程序暂停的秒数。
2. datetime模块
time 模块用于取得 Unix 纪元时间戳,并加以处理。但是,如果以更方便的格式显示日期,或对日期进行算术运算(例如,搞清楚 205 天前是什么日期,或 123 天后是什么日期),就应该使用 datetime 模块。
2.1 datetime对象
datetime 模块有自己的 datetime 数据类型。datetime 值表示一个特定的时刻。
>>> import datetime
>>> datetime.datetime.now() #获取当前时间
datetime.datetime(2015, 2, 27, 11, 10, 49, 55, 53)
>>> dt = datetime.datetime(2015, 10, 21, 16, 29, 0)
>>> dt.year, dt.month, dt.day
(2015, 10, 21)
>>> dt.hour, dt.minute, dt.second
(16, 29, 0)
2.2 timedelta对象
datetime 模块还提供了timedelta数据类型,它表示一段时间,而不是一个时刻。timedelta 对象拥有的总时间以天、秒、微秒来表示。这些数字分别保存在 days、 seconds 和 microseconds 属性中。
datetime.timedelta()函数接受关键字参数 weeks、 days、 hours、 minutes、 seconds、 milliseconds 和 microseconds创建timedelta对象。
total_seconds()方法返回只以秒表示的时间。
>>> dt = datetime.datetime.now()
>>> dt
datetime.datetime(2018, 2, 11, 16, 8, 54, 475760)
>>> thousandDays = datetime.timedelta(days=1000)
>>> dt + thousandDays
datetime.datetime(2020, 11, 7, 16, 8, 54, 475760)
>>>
2.3 将 datetime 对象转换为字符串
利用 strftime()方法,可以将 datetime 对象显示为字符串,strftime的格式化指令有:
指令 | 含义 |
---|---|
%Y | 带世纪的年份,例如’2014’ |
%y | 不带世纪的年份, ‘00’至’99’(1970 至 2069) |
%m | 数字表示的月份, ‘01’至’12’ |
%B | 完整的月份,例如’November’ |
%b | 简写的月份,例如’Nov’ |
%d | 一月中的第几天, ‘01’至’31’ |
%j | 一年中的第几天, ‘001’至’366’ |
%w | 一周中的第几天, ‘0’(周日)至’6’(周六) |
%A | 完整的周几,例如’Monday’ |
%a | 简写的周几,例如’Mon’ |
%H | 小时(24 小时时钟), ‘00’至’23’ |
%I | 小时(12 小时时钟), ‘01’至’12’ |
%M | 分, ‘00’至’59’ |
%S | 秒, ‘00’至’59’ |
%p | ‘AM’或’PM’ |
%% | 就是’%’字符 |
Example:
>>> import datetime
>>> a = datetime.datetime.now()
>>> a.strftime('%Y-%m-%d %H-%M-%S')
'2018-02-11 16-23-19'
2.4 将字符串转换为datetime
如果有一个字符串的日期信息,如’2015/10/21 16:29:00’或’October 21, 2015’,需要将它转换为 datetime 对象,就用 datetime.datetime.strftime()函数。
strptime()函数与 strftime()方法相反。定制的格式字符串使用相同的指令,像 strftime()一样。必须将格式字符串传入 strptime(),这样它就知道如何解析和理解日期字符串。
>>> datetime.datetime.strptime('2018-02-11 16-23-19', '%Y-%m-%d %H-%M-%S')
datetime.datetime(2018, 2, 11, 16, 23, 19)