《标准库time,datetime,calendar,random的使用》

一,time标准库

(一)time标准库的调用

time库是Python中处理时间的标准库。
调用方法:

import time
time.<b>()

(二)三种时间表示方法

time模块中时间表现的格式主要有三种:时间戳、元组(struct_time)、格式化的时间字符串。

  • (1)时间戳(timestamp) :timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
  • (2)format time 格式化时间字符串,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。
    在这里插入图片描述
  • (3)struct_time时间元组,共有九个元素。
    在这里插入图片描述

(三)time标准库的三类主要函数

  • (1)时间获取:time() . ctime() . gmtime()
    • time():获取当前计算机内部时间,返回浮点数
    >>> time.time()
    1524146321.7763612
    
    • ctime():以易读方式获得当前时间,返回字符串
    >>> time.ctime()
    'Thu Apr 19 21:59:34 2018'   #星期四 2018-4-19 21:59:34
    
    • gmtime():获取当前时间,返回计算机可处理的时间格式, 以UTC的时间计
    >>> time.gmtime()
    time.struct_time(tm_year=2018, tm_mon=4, tm_mday=19, tm_hour=14, tm_min=1, tm_sec=8, tm_wday=3, tm_yday=109, tm_isdst=0)
    
  • (2)时间格式化:strftime() . strptime()
    • strftime(tpl,ts):tpl是格式化模板字符串,用来定义输出效果,ts是时间变量
    >>> time.strftime('%Y-%m-%d %H:%M:%S',time.localtime())
    '2018-04-20 10:34:57'
    
    • strptime(str,tpl):str是字符串形式的时间值,tpl是格式化模板字符串,定义输出效果
    >>> time.strptime('2018-4-19 22:14:15','%Y-%m-%d %H:%M:%S')
    time.struct_time(tm_year=2018, tm_mon=4, tm_mday=19, tm_hour=22, tm_min=14,  tm_sec=15, tm_wday=3, tm_yday=109, tm_isdst=-1)
    
  • (3)程序计时:sleep() . perf-counter()
    • sleep(s):休眠时间,以秒为单位,可以是浮点数,即等待s秒
    • perf_counter():返回一个CPU级别的精确时间计数,单位为秒,通过连续求差值可获得程序执行时间
    >>> start=time.perf_counter()
    >>> end=time.perf_counter()
    >>> end-start
    10.702251718395534
    

二,datatime标准库

(一)概念及调用

datatime 模块提供一些处理日期,时间和时间间隔的函数。这个模块使用面向对象的交互取代了time模块中整形/元组类型的时间函数。
这个模块包含如下的类型:

  • datetime代表了日期和一天的时间
  • date代表日期,在1到9999之间
  • time 代表时间和独立日期。
  • timedelta 代表两个时间或者日期的间隔
  • tzinfo 实现时区支持

注意到datetime是模块,datetime模块还包含一个datetime类,通过from datetime import datetime导入的才是datetime这个类。如果仅导入import datetime,则必须引用全名datetime.datetime。datetime.now()返回当前日期和时间,其类型是datetime。

(二)时间获取

  • 获取当前日期和时间:
>>>from datetime import datetime
>>>now=datetime.now()
>>>print (now)
>>>print (type(now))

输出结果:

2019-04-03 09:15:01.847715
<class 'datetime.datetime'>
  • 获取指定日期和时间 :
>>>from datetime import datetime
>>>old = datetime(2019,4,3,9,26)
>>>print (old)

输出结果:

2019-04-03 09:26:00

(三)时间转换

  • datetime转换为timestamp
    把一个datetime类型转换为timestamp只需要简单调用timestamp()方法:
>>> from datetime import datetime
>>> dt = datetime(2015, 4, 19, 12, 20) # 用指定日期时间创建datetime
>>> dt.timestamp() # 把datetime转换为timestamp
1429417200.0

注意Python的timestamp是一个浮点数。如果有小数位,小数位表示毫秒数。

  • timestamp转换为datetime
    要把timestamp转换为datetime,使用datetime提供的fromtimestamp()方法:
>>> from datetime import datetime
>>> t = 1429417200.0
>>> print(datetime.fromtimestamp(t))
2015-04-19 12:20:00
  • str转换为datetime
    很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:
>>> from datetime import datetime
>>> cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
>>> print(cday)
2015-06-01 18:19:59
  • datetime转换为str
    如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:
>>> from datetime import datetime
>>> now = datetime.now()
>>> print(now.strftime('%a, %b %d %H:%M'))
Mon, May 05 16:28
  • 本地时间转换为UTC时间
    本地时间是指系统设定时区的时间,而UTC时间指UTC+0:00时区的时间。
    个datetime类型有一个时区属性tzinfo,但是默认为None,所以无法区分这个datetime到底是哪个时区,除非强行给datetime设置一个时区:
>>> from datetime import datetime, timedelta, timezone
>>> tz_utc_8 = timezone(timedelta(hours=8)) # 创建时区UTC+8:00
>>> now = datetime.now()
>>> now
datetime.datetime(2015, 5, 18, 17, 2, 10, 871012)
  • 时区转换
    我们可以先通过utcnow()拿到当前的UTC时间,再转换为任意时区的时间。

三,calendar标准库

calendar 模块是python实现的unix 的 cal命令。它可以以标准的模式打印出给定年月的日历。
calendar标准库的调用:

>>> import calendar

主要函数:

  • calendar(year,w=2,l=1,c=6):返回 year 年的年历,3 个月一行,间隔距离为 c,每日宽度间隔为 w 字符,每行长度为 21 * w + 18 + 2 * c,l 是每星期行数。
>>> year = calendar.calendar(2019)
>>> print(year)
                                         2019

      January                   February                   March
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                   1  2  3                   1  2  3
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       4  5  6  7  8  9 10
14 15 16 17 18 19 20      11 12 13 14 15 16 17      11 12 13 14 15 16 17
21 22 23 24 25 26 27      18 19 20 21 22 23 24      18 19 20 21 22 23 24
28 29 30 31               25 26 27 28               25 26 27 28 29 30 31

       April                      May                       June
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7             1  2  3  4  5                      1  2
 8  9 10 11 12 13 14       6  7  8  9 10 11 12       3  4  5  6  7  8  9
15 16 17 18 19 20 21      13 14 15 16 17 18 19      10 11 12 13 14 15 16
22 23 24 25 26 27 28      20 21 22 23 24 25 26      17 18 19 20 21 22 23
29 30                     27 28 29 30 31            24 25 26 27 28 29 30

        July                     August                  September
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7                1  2  3  4                         1
 8  9 10 11 12 13 14       5  6  7  8  9 10 11       2  3  4  5  6  7  8
15 16 17 18 19 20 21      12 13 14 15 16 17 18       9 10 11 12 13 14 15
22 23 24 25 26 27 28      19 20 21 22 23 24 25      16 17 18 19 20 21 22
29 30 31                  26 27 28 29 30 31         23 24 25 26 27 28 29
                                                    30

      October                   November                  December
Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su      Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                   1  2  3                         1
 7  8  9 10 11 12 13       4  5  6  7  8  9 10       2  3  4  5  6  7  8
14 15 16 17 18 19 20      11 12 13 14 15 16 17       9 10 11 12 13 14 15
21 22 23 24 25 26 27      18 19 20 21 22 23 24      16 17 18 19 20 21 22
28 29 30 31               25 26 27 28 29 30         23 24 25 26 27 28 29
                                                    30 31
  • isleap(year):这个是判断是否为闰年,是则返回 true,否则返回 false。
>>> calendar.isleap(2018)
False
>>>calendar.isleap(2020)
True
  • leapdays(y1,y2):返回 y1,y2 两年之间的闰年总数,左闭右开区间,在这点上和序列的切片一样。
>>>calendar.leapdays(2000,2021)
 6
  • month(year,month,w=2,l=1):返回 year 年 mouth 月日历,两行标题,一周一行。每日间隔宽度为 w 字符,每行的长度为 7 * w + 6,l 是每个星期的行数。
 print(calendar.month(2019,4))
    April 2019
Mo Tu We Th Fr Sa Su
1  2  3  4  5  6  7
8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
  • monthrange(year,month):返回一个元组,里面有两个整数。第一个整数代表着该月的第一天是从星期几开始的(从 0 开始,依次为星期一,星期二…直到 6 代表星期日)。第二个整数代表该月一共多少天。
>>>calendar.monthrange(2019,3)
(4, 31)
>>>calendar.monthrange(2019,4)
 (0, 30)
  • monthcalendar(year,month):返回一个列表,列表内的元素还是列表,每个子列表代表一个星期,都是从星期一到星期日,如果没有本月的日期的话,则为 0。
>>> calendar.monthcalendar(2018,9) [[0, 0, 0, 0, 0, 1, 2], [3, 4, 5, 6, 7, 8, 9], [10, 11, 12, 13, 14, 15, 16], [17, 18, 19, 20, 21, 22, 23], [24, 25, 26, 27, 28, 29, 30]] >>> calendar.monthcalendar(2018,8) [[0, 0, 1, 2, 3, 4, 5], [6, 7, 8, 9, 10, 11, 12], [13, 14, 15, 16, 17, 18, 19], [20, 21, 22, 23, 24, 25, 26], [27, 28, 29, 30, 31, 0, 0]]
  • weekday(year,month,day):输入年月日,返回该日是星期几.
>>>calendar.weekday(2019,4,3)
 2
>>>calendar.weekday(2020,4,3)
 4

四,random标准库

(一)概念及调用

random库是使用随机数的Python标准库。
调用方式:

import random

(二)主要函数

random库主要分为两类随机函数:基本随机函数和扩展随机函数。

  • (1)基本随机函数
    • seed(a = None):初始化给定的随机种子,默认为当前系统时间。
    >>>random.seed(10)    #产生种子10对应的序列
    
    • random():生成一个【0.0,1.0)之间的随机小数。
     >>> random.random()
     0.5714025946899135
    
  • (2)扩展随机函数
    • randint(a,b):随机生成一个【a,b】之间的整数。
    >>>random.randint(1,10)
    7
    
    • randrange(m,n[,k]):生成一个【m,n)之间以k为步长的随机整数。
    >>> random.randrange(1,10,2)
    7
    
    • getrandbits(k):生成一个k比特长的随机整数。
    >>>random.getrandbits(5)
    18
    
    • uniform(a,b):生成一个【a,b】之间的随机小数。
    >>>random.uniform(0,10)
    0.14832446024553692
    
    • choice(seq):从序列seq中随机选取一个元素。
    • shuffle(seq):将序列seq中元素随机排列,返回打乱后的序列。

借鉴文章:
【优快云博客】(https://blog.youkuaiyun.com/a18353365031/article/details/80011593)
【优快云博客】(https://www.cnblogs.com/jason-lv/p/8260539.html)
【优快云博客】(https://www.cnblogs.com/lichunl/p/9098024.html)
【优快云博客】(http://www.cnblogs.com/zhanhg/p/4396434.html)
【百度】(https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/001431937554888869fb52b812243dda6103214cd61d0c2000)
[优快云博客】(https://blog.youkuaiyun.com/u013486414/article/details/85417704)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值