Python模块--time&datetime
一 概述
在Python中,时间有三种表示方式:
- 时间戳(timestamp) :通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。即:time.time(),返回的是float类型
- 格式化的时间字符串(Format String):如:2010-10-10 10:10,即:time.strftime('%Y-%m-%d')
- 结构化时间(struct_time) :为元组形式,包含9个元素(年,月,日,时,分等),返回struct_time的函数主要有:gmtime(),localtime(),striptime()
二 time模块
2.1 时间形式的转化
结构化时间、时间戳转换为固定时间字符串:
示例代码:
import time
# 返回当前时间的时间戳
print(time.time()) # 1526639998.3745897
# time.localtime([secs]):将一个时间戳转换为当前时区的struct_time,secs参数未提供,则以当前时间为准
print(time.localtime()) # time.struct_time(tm_year=2018, tm_mon=5, tm_mday=18, tm_hour=18, tm_min=39, tm_sec=58, tm_wday=4, tm_yday=138, tm_isdst=0)
# time.gmtime([secs]):与localtime()方法类似,将一个时间戳转换为UTC时区的(0时区)struct_time,secs参数未提供,则以当前时间为准
print(time.gmtime()) # time.struct_time(tm_year=2018, tm_mon=5, tm_mday=18, tm_hour=10, tm_min=39, tm_sec=58, tm_wday=4, tm_yday=138, tm_isdst=0)
# time.mktime(t):将一个struct_time转换为时间戳
print(time.mktime(time.localtime())) # 1526639999.3745897
# time.sleep(secs):线程推迟指定的时间运行,单位为秒
time.sleep(10) # 睡眠10s
# time.strftime(format[,t]):把一个代表时间的元组或者struct_time(如由time.localtime()或者time.gmtime()返回)转化为格式化的时间字符串。如果t未指定,将传入time.localtime()
print(time.strftime('%Y-%m-%d %X')) # 2018-05-18 18:39:58
# time.strptime(string,[,format]):把一个格式化的时间字符串转换为struct_time(结构化时间),它和time.strftime()是逆操作
print(time.strptime('2010-10-10','%Y-%m-%d')) # time.struct_time(tm_year=2010, tm_mon=10, tm_mday=10, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=6, tm_yday=283, tm_isdst=-1)
# time.asctime([t]):把一个表示时间的元组或者struct_time转换为固定时间字符串(这种形式:Fri May 18 18:39:58 2018)。如果没有参数,则将time.localtime()传入
print(time.asctime()) # Fri May 18 18:39:58 2018
# time.ctime([secs]):把一个时间戳转换为固定时间字符串(time.asctime()形式),如果参数未给或者为None,将会以time.time()为参数。它的作用相当于time.asctime(time.localtime([secs]))
print(time.ctime()) # Fri May 18 18:39:58 2018
print(time.asctime(time.localtime())) # Fri May 18 18:39:58 2018
2.2 结构化时间元组元素
2.3 时间日期格式化符号
- %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 当前时区的名称
- %% %号本身
三 datetime模块
相比于time模块,datetime模块的接口更直观,更容易调用
datetime模块定义看下面这几个类:
- datetime.date:表示日期的类。常用的属性有year,month,day
- datetime.time:表示时间的类。常用的属性有hour,minute,second,microsecond
- datetime.datetime:表示日期时间
- datetime.timedelta:表示时间间隔,即两个时间点之间的长度
- datetime.tzinfo:与时区有关的相关信息
常用的方法仅有以下几个:
import datetime # datetime.datetime.now():返回当前的datetime日期类型 d = datetime.datetime.now() print(d.timestamp()) # 1552641244.733234 print(d.today()) # 2019-03-15 17:14:04.733235 print(d.year) # 2019 print(d.timetuple()) # time.struct_time(tm_year=2019, tm_mon=3, tm_mday=15, tm_hour=17, tm_min=14, tm_sec=4, tm_wday=4, tm_yday=74, tm_isdst=-1) # datetime.date.fromtimestamp():把一个时间戳转换为datetime日期类型 d = datetime.date.fromtimestamp(666666666) print(d) # 1991-02-16 d = datetime.datetime.fromtimestamp(666666666) print(d) # 1991-02-16 09:11:06 # 时间运算 d = datetime.datetime.now() print(d) # 2019-03-15 17:21:37.785178 d = datetime.datetime.now() + datetime.timedelta(4) # 当前时间加4天 print(d) # 2019-03-19 17:21:37.785178 d = datetime.datetime.now() + datetime.timedelta(hours = 4) # 当前时间加4小时 print(d) # 2019-03-15 21:21:37.785178 # 时间替换 d = datetime.datetime.now() print(d.replace(year=2020, month=12, day=12)) # 2020-12-12 17:21:37.785178




浙公网安备 33010602011771号