欢迎加入 Python 官方文档翻译团队:https://www.transifex.com/python-doc/
datetime 模块提供了可以通过多种方式操作日期和时间的类。在支持日期时间数学运算的同时,实现的关注点更着重于如何能够更有效地解析其属性用于格式化输出和数据操作。
datetime 模块包括 data、time 的所有功能,常用的 datatime 实例方法如下:
datetime.now():获取当天的日期和时间
datetime.date(t):获取当天的日期,t 为 datetime 实例参数
datetime.time(t):获取当天的时间,t 为 datetime 实例参数
datetime.ctime(t):获取【星期 月 日 时 分 秒 年】格式的字符串,t 为 datetime 实例参数
datetime.utcnow(t):获取当前的 UTC(Universal Time Coordinated,协调世界时)日期和时间
datetime.timestamp(t):获取当天的 UNIX 时间戳,t 为 datetime 实例参数
datetime.fromtimestamp(t_tamp):根据时间戳返回 UTC 日期时间,t_tamp 为时间戳浮点数
datetime.combine(d, t):绑定日期、时间,生成新的 datetime 对象,d 为日期对象,t 为时间对象
datetime.strptime(date_str, sf):根据字符串和指定的格式生成新的 datetime 对象,date_str 为字符串日期时间,sf 为指定格式
datetime.timetuple(t):把 datetime 对象所有属性转为时间元组对象,t 为 datetime 实例参数
t.isocalendar():获取 ISO 格式的日期(元组形式),t 为 datetime 实例对象
t.strftime(date_str_format):获取自定义格式的日期时间字符串,t 为 datetime 实例对象,date_str_format 指定格式
datetime 模块里面的 datetime 类基本功能示例:
>>> from datetime import datetime, date, time # 从 datetime 模块导入 datetime、date、time
>>>
>>> print(datetime.now()) # 返回当天的日期和时间
2020-02-21 15:32:27.356006
>>>
>>> today = datetime.now() # 定义 today 为当前日期时间对象
>>> print(datetime.date(today)) # 返回当天的日期对象
2020-02-21
>>>
>>> print(datetime.time(today)) # 返回当天的时间对象
15:57:38.770308
>>>
>>> print(datetime.ctime(today)) # 返回【星期 月 日 时 分 秒 年】格式的字符串
Fri Feb 21 15:57:38 2020
>>>
>>> print(datetime.utcnow()) # 返回当前的 UTC 日期和时间
2020-02-21 07:59:27.180956
>>>
>>> print(datetime.timestamp(today)) # 返回当天的 UNIX 时间戳,浮点数类型
1582271858.770308
>>>
>>> print(datetime.fromtimestamp(datetime.timestamp(today))) # 根据时间戳返回 UTC 日期时间
2020-02-21 15:57:38.770308
>>>
>>> date1 = date(2020,2,21) # 使用 date 类,实现实例化 date1 对象
>>> time1 = time(16,2,30) # 使用 time 类,实现实例化 time1 对象
>>> print(datetime.combine(date1, time1)) # 绑定日期、时间,生成新的 datetime 对象
2020-02-21 16:02:30
>>>
>>> NewDateTime = datetime.strptime("21/2/20 16:10", '%d/%m/%y %H:%M') # 用字符串和指定格式生成新的 datetime 对象
>>> print(NewDateTime)
2020-02-21 16:10:00
>>>
>>> today = datetime.now() # 定义 today 为当前日期时间对象
>>> for i in datetime.timetuple(datetime.now()): # 将 today 当作时间元组,循环打印print(i)2020
2
21
17
57
43
4
52
-1
>>>
>>> print(today.isocalendar()) # ISO 格式的日期
(2020, 8, 5)
>>>
>>> print(today.strftime('%Y 年 %m 月 %d 日 %H:%M:%S %p # 对 datetime 对象自定义格式,返回字符串类型的值
2020 年 02 月 21 日 17:57:02 PM
strftime()
和 strptime()
方法会用到时间日期格式化符号,各个格式化符号所代表的意思如下:
格式化符号 | 含义 |
---|---|
%a | 本地简化星期名称 |
%A | 本地完整星期名称 |
%b | 本地简化的月份名称 |
%B | 本地完整的月份名称 |
%c | 本地相应的日期表示和时间表示 |
%d | 月内中的一天(0-31) |
%f | 以十进制数表示的毫秒,在左侧补零 |
%H | 24小时制小时数(0-23) |
%I | 12小时制小时数(01-12) |
%j | 年内的一天(001-366) |
%m | 月份(01-12) |
%M | 分钟数(00-59) |
%p | 本地A.M.或P.M.的等价符 |
%S | 秒(00-59) |
%U | 一年中的星期数(00-53)星期天为星期的开始 |
%w | 星期(0-6),星期天为星期的开始 |
%W | 一年中的星期数(00-53)星期一为星期的开始 |
%x | 本地相应的日期表示 |
%X | 本地相应的时间表示 |
%y | 两位数的年份表示(00-99) |
%Y | 四位数的年份表示(000-9999) |
%z | ±HHMM[SS[.ffffff]] 形式的 UTC 差值(如果对象为简单型则为空字符串) |
%Z | 当前时区的名称 |
%% | %号本身 |