目录

  • 1. time模块
  • 1.1. 求当前时间戳
  • 1.2. 求给定时间的时间戳(输入时间元组)
  • 1.3. 按指定格式显示当前时间,返回字符串
  • 1.4. 指定时间字符串,按指定格式拆分为数组
  • 1.5. 显示英文时间
  • 1.6. 进程挂起1s时间
  • 1.7. 格式化字符串
  • 2. datetime模块
  • 2.1. 初始化datatime类
  • 2.2. 得到一个指定具体时间的datetime类dt0
  • 2.3. 分别取年、月、日、时、分、秒、微秒
  • 2.4. 取date和time
  • 2.5. 取周几、日历
  • 2.6. 公元天数换算
  • 2.7. 取当前时间、零时区时间
  • 2.8. 取时间的标准str
  • 2.9. 时间戳
  • 2.10. 自定义格式时间、英文格式时间
  • 2.11. 时间元组
  • 2.12. 给定时间str,按时间格式拆开,返回datetime.datetime类
  • 2.13. datetime加减

感觉datetime模块更好用些

1. time模块

时间元组: (年,月,日,时,分,秒,周几,年中第几天,是否夏令时),手工指定时,最后3项可以指定为0;
时间戳:指定时间距1970-01-01 00:00:00总秒数,float型数;

>>> import time

1.1. 求当前时间戳

>>> time.time() # 1531722744.1899934,float型数

1.2. 求给定时间的时间戳(输入时间元组)

>>> t = (2018,7,16,14,38,59,0,0,0) # 时间元组,最后3项可以指定为0  
>>> time.mktime(t) # 1531723139.0,给定时间的时间戳,注意参数只有一个而不是9个

1.3. 按指定格式显示当前时间,返回字符串

>>> time.strftime('%Y-%m-%d %H:%M:%S') # '2018-07-16 14:54:26',返回str

1.4. 指定时间字符串,按指定格式拆分为数组

>>> str = '2018-07-1615:20:00'  
>>> time.strptime(str, '%Y-%m-%d %H:%M:%S') # 返回time.struct_time

返回time.struct_time(tm_year=2018, tm_mon=7, tm_mday=16, tm_hour=15, tm_min=20, tm_sec=0, tm_wday=0, tm_yday=197, tm_isdst=-1)
如果时间格式串与字符串不匹配会报告错误:time data xxx does not match format '%xxx'

1.5. 显示英文时间

>>> t = (2018,7,16,14,38,59,0,0,0)  
>>> time.asctime(t) # 'Mon Jul 16 14:38:59 2018',返回str

1.6. 进程挂起1s时间

>>> time.sleep(1)。

1.7. 格式化字符串

格式

说明

%y

两位数年份(00-99)

%Y

四位数年份(0000-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

当前时区的名称

%%

%号本身

2. datetime模块

时间元组: (年,月,日,时,分,秒,微秒),注意这个时间元组有7个元素;
时间戳:给定的时间距离开始时间(1970-01-01 00:00:00)总秒数,float型数;

datetime模块中有一个datetime类,所有的信息都存储在这个类中

2.1. 初始化datatime类

>>> import datetime
>>> dt = datetime.datetime # 给datetime类一个别名
>>> type(dt)
# <class 'type'>

2.2. 得到一个指定具体时间的datetime类dt0

>>> dt0 = dt(2018,7,16,17,7,30,1)
>>> type(dt0)# 可以从dt0中取想要的数据
# <class 'datetime.datetime'>

2.3. 分别取年、月、日、时、分、秒、微秒

>>> dt0.year# 取年份, 返回值为int
2018
>>> dt0.month # 取月份, 返回值为int
7
>>> dt0.day# 取日期,返回值为int
16
>>> dt0.hour# 取时,返回值为int
14
>>> dt0.minute# 取分,返回值为int
29
>>> dt0.second# 取秒,返回值为int
20
>>> dt0.microsecond# 取微秒,返回值为int
253127

2.4. 取date和time

>>> dt0.date()# 取年月日, 返回datetime.date类
datetime.date(2018,7,16)
>>> dt0.time()# 取时间, 返回datetime.time类
datetime.time(17,7,30,1)

2.5. 取周几、日历

>>> # 取周几:
>>> dt0.weekday()#周一为0, 返回值为int
0
>>> dt0.isoweekday() #周一为1, 返回值为int
1
>>> dt0.isocalendar() # 取日历, 返回tuple,
(2018, 29,1)# 含义:(年,第几周,周几);

2.6. 公元天数换算

>>> dt0.toordinal() # 到公元元年的天数, 返回值为int
736891
>>> dt1 = dt0.fromordinal(54) # 指定到公元元年的天数,算datetime,返回datetime类
>>> dt1
datetime.datetime(1,2,23,0,0)

2.7. 取当前时间、零时区时间

>>> # 取当前时间:返回datetime类
>>> dt2 = dt.today()
>>> dt2
datetime.datetime(2018,7,17,10,31,53,757945)
>>> dt3 = dt.now()
>>> dt3
datetime.datetime(2018,7,17,10,31,53,758002)
>>>
>>> # 取零时区时间:返回datetime类
>>> dt4 = dt.utcnow()
>>> dt4 # 中国是东8区,所以零时区时间=中国时间-8 (东边日出早,小时数值大)
datetime.datetime(2018,7, 17, 2, 31, 53, 758017)

2.8. 取时间的标准str

>>> dt0.isoformat() # 得到时间的标准str,返回值为str
'2018-07-16T17:07:30.1'

2.9. 时间戳

>>> dt0.timestamp() # 从datetime取时间戳: 返回float,小数位表示毫秒数
1531732050.000001
>>> dt5 = dt0.fromtimestamp(1531732650.000001) # 从时间戳取datetime: 返回datetime类
>>> dt5
datetime.datetime(2018,7,16,17,17,30,1)

2.10. 自定义格式时间、英文格式时间

>>> dt.strftime('%Y-%m-%d') # 按自定义格式返回时间str
'2018-07-16'
>>> dt.ctime() # 取英文格式的时间,返回str
'Mon Jul 16 17:07:30 2018'

2.11. 时间元组

>>> dt0.timetuple() # 得到9个元素的时间元组,
time.struct_time(tm_year=2018, tm_mon=7,tm_mday=16, tm_hour=17, tm_min=07, tm_sec=30,tm_wday=1, tm_yday=190,tm_isdst=-1)

2.12. 给定时间str,按时间格式拆开,返回datetime.datetime类

>>> str='2049-12-31 23:59:59'
>>> dt6 = dt.strptime(str, '%Y-%m-%d %X')
>>> dt6
datetime.datetime(2049,12,31,23,59,59)

2.13. datetime加减

>>> now = datetime.datetime.now()
datetime.datetime(2017,8,23,14,21,33,796979)
>>>
>>> now + datetime.timedelta(hours=10)
datetime.datetime(2017,8,24,0,21,33,796979)
>>>
>>> now - datetime.timedelta(days=1)
datetime.datetime(2017,8,22,14,21,33,796979)
>>>
>>> now + datetime.timedelta(days=2, hours=12)
datetime.datetime(2017,8,26,2,21,33,796979)