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 值表示一个特定的时刻。

  1. >>> import datetime
  2. >>> datetime.datetime.now() #获取当前时间
  3. datetime.datetime(2015, 2, 27, 11, 10, 49, 55, 53)
  4. >>> dt = datetime.datetime(2015, 10, 21, 16, 29, 0)
  5. >>> dt.year, dt.month, dt.day
  6. (2015, 10, 21)
  7. >>> dt.hour, dt.minute, dt.second
  8. (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)