time和datatime模块
时间相关的操作,时间有三种表示方式:
- 时间戳 1970年1月1日之后的秒,即:time.time()
- 格式化的字符串 2019-1-1 12:12, 即:time.strftime('%Y-%m-%d')
- 结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()
datetime模块定义了下面这几个类:
- datetime.date:表示日期的类。常用的属性有year, month, day;
- datetime.time:表示时间的类。常用的属性有hour, minute, second, microsecond;
- datetime.datetime:表示日期时间。
- datetime.timedelta:表示时间间隔,即两个时间点之间的长度。
- datetime.tzinfo:与时区有关的相关信息。
元组(struct_time)方式:
struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
下面列出这种方式元组中的几个元素:
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 当前时区的名称
%% %号本身
备注:
-
“%p”只有与“%I”配合使用才有效果。
-
文档中强调确实是0 - 61,而不是59,闰年秒占两秒(汗一个)。
-
当使用strptime()函数时,只有当在这年中的周数和天数被确定的时候%U和%W才会被计算。
import time
print(time.time()) # 时间戳, 1970年1月1日之后的秒
print(time.strftime('%Y-%m-%d %X %p')) # 格式化的字符串
print(time.localtime()) # 本地时区 =上海时区
print(time.gmtime()) # UTC时区
print(time.process_time()) # 测量处理器运算时间,不包括sleep时间
print(time.altzone) # 返回与utc时间的时间差,以秒计算
print(time.asctime()) # 返回时间格式 Mon Jan 28 13:15:21 2019
print(time.ctime())
print(time.gmtime(time.time()-666666666)) # 返回utc时间的struc时间对象格式
print(time.strptime('2019-1-28', '%Y-%m-%d')) # 将 日期字符串 转成 struct时间对象格式
print(time.mktime()) # 将struct时间对象转成时间戳
import datetime
print(datetime.datetime.now()) # 返回 2016-08-19 12:47:03.941925
print(datetime.date.fromtimestamp(time.time())) # 时间戳直接转成日期格式 2016-08-19
print(datetime.datetime.now())
print(datetime.datetime.now() + datetime.timedelta(3)) # 当前时间+3天
print(datetime.datetime.now() + datetime.timedelta(-3)) # 当前时间-3天
print(datetime.datetime.now() + datetime.timedelta(hours=3)) # 当前时间+3小时
print(datetime.datetime.now() + datetime.timedelta(minutes=30)) # 当前时间+30分
c_time = datetime.datetime.now()
print(c_time.replace(minute=3, hour=2)) # 时间替换