Python笔记_第二篇_面向过程_第二部分_4.常用模块的简单使用_time模块、datetime模块和calendar模块

1. time模块

  UTC:世界协调时间:格林尼治天文时间,世界标准时间,中国来说是UTC + 8。
  DST:夏令时:是一种节约能源而人为规定时间制度,在夏季调快1个小时。

  时间的表示形式:
  1.时间戳
  以整型或浮点型表示时间的一个以秒为单位的时间间隔。这个时间间隔的基础值是从1970年1月1号01秒开始算起。
  2.元组
  一种Python的数据结构表示,这个元组有9个整型内容:
  year
  month
  day
  hours
  minutes
  seconds
  weekday
  julia day
  flag(1或-1或0):0表示正常格式,1表示夏令时,-1根据当前日期自己判断。
  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)
  %f 毫秒(000000-999999)
  %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 当前时区的名称
  %% %号本身

  

  举例1:返回当前时间的时间戳,浮点数形式:

# 返回当前时间的时间戳,浮点数形式
c = time.time()
print(c)
# 返回值:1557662207.2357445

  举例2:将时间戳转为UTC时间元组(格林尼治时间)

# 将时间戳转为UTC时间元组(格林尼治时间)
t = time.gmtime() # 全称:Greenwich Mean time
print(t)
# 返回值:
# time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12,
#                  tm_hour=11, tm_min=57, tm_sec=12, tm_wday=6, tm_yday=132, tm_isdst=0)

  举例3:将时间戳转为本地时间元组

# 将时间戳转为本地时间元组
beijingTime = time.localtime()
print(beijingTime)
# 返回值:
# time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12,
#                  tm_hour=19, tm_min=57, tm_sec=45, tm_wday=6, tm_yday=132, tm_isdst=0)

  举例4:将本地时间元素转换为时间戳

# 将本地时间元组转换为时间戳
beijingTime = time.localtime()
m  = time.mktime(beijingTime)
print(m)
# 返回值:1557662408.0

  举例5:将本地时间转换为字符串

# 将时间元组转换成字符串
beijingTime = time.localtime()
s  = time.asctime(beijingTime)
print(s)
# 返回值:
# Sun May 12 20:00:58 2019

  举例6:

# 将时间戳转为字符串
c = time.time()
p = time.ctime(c)
print(p)
# 返回值:
# Sun May 12 20:01:40 2019

  举例7:将时间元组转成给定格式的字符串,本地时间不写就是当前时间,也可以写成其他时间。  

# 将时间元组转换成给定格式的字符串,本地时间不写就是当前时间,也可以写成其他时间,
# 参数二为时间元组
beijingTime = time.localtime()
q = time.strftime("%Y-%m-%d %H:%M:%S",beijingTime)
print(beijingTime)
print(q)
print(type(q)) #转换成字符串类型
# 返回值
# time.struct_time(tm_year=2019, tm_mon=5, tm_mday=12, tm_hour=20, 
#                  tm_min=3, tm_sec=1, tm_wday=6, tm_yday=132, tm_isdst=0)
# 2019-05-12 20:03:01
# <class 'str'>

  举例8:将时间字符串转换成元组:

# 将时间字符串转换成时间元组
beijingTime = time.localtime()
q = time.strftime("%Y-%m-%d %H:%M:%S",beijingTime)
w = time.strptime(q,"%Y-%m-%d %H:%M:%S")
print(w)

  其实上面说的挺乱,就是字符串、元组、时间戳来回转换,我们用一张图表来详细的说明这些函数方法的关系

  

  举例9:时钟、沉睡类型方法,不过Python3.8对于sleep这个函数要被弃用,改成time.perf_counter这个方法

# 延迟一个时间,整型或浮点型
time.sleep(4)


# 返回当程序的CPU执行时间
# UNIX始终返回全部的运行时间
# WINDOW从第二次开始,都是以第一次调用此函数的开始时间戳作为基数
# python 3.8 这个函数将要被弃用
# 换成time.perf_counter()这个函数
# 这个可以做电脑的性能测试,表示CPU处理速度快慢
y1 = time.clock()
print(y1)
time.sleep(2)
y2 = time.clock()
print(y2)
time.sleep(2)
y3 = time.clock()
print("%d",y3)
y1 = time.perf_counter()
print("%d" %y1)
time.sleep(2)
y2 = time.perf_counter()
print("%d" %y2)
time.sleep(2)
y3 = time.perf_counter()
print("%d" %y3)

# 举例说明:
time.perf_counter()  # 表示下面范围运行需要多长时间
sum = 0
for i in range(10000):
    sum += i
print(time.perf_counter())

time.perf_counter()  # 表示下面范围运行需要多长时间
sum = 0
for i in range(100):
    sum *= i

print(time.perf_counter())

 

2. datetime模块

  datetime比time高级不少,可以理解为datetime基于time进行了封装,提供了各种使用函数。datetime模块的接口更直观,更容易调用。

  模块中的类包括五种:

  datetime类:同时有时间和日期

  timedelta类:主要用于计算时间的跨度

  tzinfo类:时区

  time类:直关注时间

  date类:直关注日期

  举例10:获取当前时间:

import datetime

# 获取当期时间 d1
= datetime.datetime.now() print(d1) print(type(d1)) # 返回值: # 2019-05-12 20:11:51.832677 # <class 'datetime.datetime'>

  举例11:获取指定时间:

# 获取指定时间
d2 = datetime.datetime(1999,10,1,10,28,25,123456)
print(d2)
# 返回值:
# 1999-10-01 10:28:25.123456

  举例12:将事件类型转换陈个字符串类型

# 将时间数据类型转换成字符串
d1 = datetime.datetime.now()
d3 = d1.strftime("%Y-%m-%d %X")
print(type(d3))
print(d3)
# 返回值:
# <class 'str'>
# 2019-05-12 20:13:19

  举例13:将格式化字符串转换为datetime对象

# 将时间数据类型转换成字符串
d1 = datetime.datetime.now()
d3 = d1.strftime("%Y-%m-%d %X")
print(type(d3))
print(d3)
# 返回值:
# <class 'str'>
# 2019-05-12 20:13:19

# 将格式化字符串转为datetime对象
d4 = datetime.datetime.strptime(d3,"%Y-%m-%d %X")
print(type(d4))
print(d4)

  举例14:时间的减法运算

d5 = datetime.datetime(1999,10,1,10,28,25,123456)
d6 = datetime.datetime.now()
d7 = d6 - d5
print(type(d7))
print(d7)
print(d7.days) # 提取到间隔的天数
print(d7.seconds) # 提取间隔的秒数
print(d5.minute) # 提取间隔的分钟数
# 返回值:
# 7163 days, 9:46:45.024078
# 7163
# 35205
# 28

 

3. calendar模块

  举例15:

import calendar

# 返回指定某年某月的日历
print(calendar.month(2017,7))
# 返回指定年的日历
print(calendar.calendar(2019))

# 判断是不是闰年True/False
print(calendar.isleap(2019))

# 返回某个月的weekday的第一天和这个月所有的天数
print(calendar.monthrange(2017,7))
# (5, 31) 5 表示举例第一天的开始多少天

# 返回某个月以每一周为元素的列表
print(calendar.monthcalendar(2017,7))
print(type(calendar.monthcalendar(2017,7))) # 返回列表形式

 

posted @ 2019-05-12 20:18  时海涛|Thomas  阅读(308)  评论(0编辑  收藏  举报