• python学习之模块-模块(三)


    5.6 time 模块

    已经知道的常用的time方法:time.time()获取当前时间的时间戳;time.sleep(num)线程推迟指定的时间(秒)后再继续往下运行。

    时间的表示方式

    大致可以分为:时间戳、元组(struct_time)、格式化的时间字符串

    • 时间戳--timestamp

    时间戳表示的是从1970年1月1日00:00:00开始,按秒计时,类型是float

    • 格式化的时间字符串(Format String)

    %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 当前时区的名称 %% % 号本身
    • 元组(struct_time)

    struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天等)

    索引(Index) 属性(Attribute) 值(Values)
    0 tm_year(年) 比如2011
    1 tm_mon(月) 1 - 12
    2 tm_mday(日) 1 - 31
    3 tm_hour(时) 0 - 23
    4 tm_min(分) 0 - 59
    5 tm_sec(秒) 0 - 60
    6 tm_wday(weekday) 0 - 6(0表示周一)
    7 tm_yday(一年中的第几天) 1 - 366
    8 tm_isdst(是否是夏令时) 默认为0

    【总结】时间戳是计算机能够识别的时间;时间字符串是人能够看懂的时间;元组则是用来操作时间的

    import time  #导入时间模块
    
    #时间戳
    print(time.time())
    # 1561729203.008572
    
    #时间字符串
    ft = time.strftime("%Y-%m-%d %H:%M:%S")  #格式化里的字符必须是ASCII里的元素,不能是汉字
    print(ft)   #2019-06-28 21:42:24
    
    #时间元组
    tt = time.localtime()
    print(tt)
    # time.struct_time(tm_year=2019, tm_mon=6, tm_mday=28, tm_hour=21, tm_min=44, tm_sec=5, tm_wday=4, tm_yday=179, tm_isdst=0)
    
    • 几种格式之间的转换

    #格式化时间---->结构化时间
    ft1 = time.strftime("%Y-%m-%d %H:%M:%S")
    st1 = time.strptime(ft1,"%Y-%m-%d %H:%M:%S")  #转成结构化时间,后边的格式必须要与格式化时间结构一致
    print(st1)
    
    #结构化时间--->时间戳
    tt1 = time.mktime(st1)    #转换后,时间戳紧缺到小数点后一位
    print(tt1)
    
    #时间戳--->结构化时间
    st2 = time.localtime(tt1)   #不传参,就是获取当前的结构化时间
    print(st2)
    st3 = time.gmtime(tt1)
    print(st3)
    
    #结构化时间--->格式化时间
    ft2 = time.strftime("%Y-%m-%d %H:%M:%S",st3)   #strftime要把更改的时间放在第二个位置参数
    print(ft2)
    

    asctime 与 ctime

    • struct_time---->format time 格式固定
    st = time.localtime()  #获取当前结构化时间
    print(st)
    ft = time.asctime()   #获取当前格式化时间
    print(ft)
    ft1 = time.asctime(st)   #把结构化时间转换成固定格式的格式化时间,
    print(ft1)
    
    • timestamp ----> format time 格式固定
    tt = time.time()
    ft = time.ctime()    #不传参,获取当前格式化时间
    ft1 = time.ctime(tt)    #把时间戳时间转换成固定格式的格式化时间,
    print(ft1)
    

    【练习】计算时间差

    sta_time = time.mktime(time.strptime('2017-12-23 08:30:00','%Y-%m-%d %H:%M:%S'))
    end_time = time.mktime(time.strptime('2018-12-23 08:30:00','%Y-%m-%d %H:%M:%S'))
    dif_time = end_time - sta_time
    st = time.gmtime(dif_time)
    print('过去了%d年%d月%d天%d小时%d分钟%d秒'%(st.tm_year-1970,st.tm_mon-1,
                                           st.tm_mday-1,st.tm_hour,
                                           st.tm_min,st.tm_sec))
    

    5.7 datetime模块

    import datetime
    now = datetime.datetime.now()
    print(now)
    print(datetime.datetime.now()+datetime.timedelta(weeks=4))  #4周后
    print(datetime.datetime.now()+datetime.timedelta(weeks=-3)) #3周前
    print(datetime.datetime.now() + datetime.timedelta(days=-2)) # 2天前
    print(datetime.datetime.now() + datetime.timedelta(days=3)) # 三天后
    print(datetime.datetime.now() + datetime.timedelta(hours=5)) # 5小时后
    print(datetime.datetime.now() + datetime.timedelta(hours=-6)) # 6小时前
    print(datetime.datetime.now() + datetime.timedelta(minutes=-10)) # 10分钟前
    print(datetime.datetime.now() + datetime.timedelta(minutes=15)) # 15分钟后
    print(datetime.datetime.now() + datetime.timedelta(seconds=-30)) # 30秒前
    print(datetime.datetime.now() + datetime.timedelta(seconds=40)) # 40秒后
    
    current_time = datetime.datetime.now()
    
    print(current_time.replace(year=2008))  # 直接调整到2008年
    print(current_time.replace(month=11))  # 直接调整到11月份
    print(current_time.replace(year=1997,month=4,day=25))  # 1997-04-25 18:49:05.898601
    
    # 将时间戳转化成时间
    print(datetime.date.fromtimestamp(1232132131))  # 2009-01-17
    

    5.8 random模块

    产生随机数

    import random
    
    # 随机生成小数
    n1 = random.random()  #随机生成0-1范围内的小数
    
    # 自定义范围的小数
    n2 = random.uniform(1,4)  #可用于发红包
    
    # 随机整数
    n3 = random.randint(1,9)  #自定义范围内的整数, 1 <= n3 <= 9
    n4 = random.randrange(1, 10, 2)   #[2,4,6,8]范围内的偶数,1 <= n4 < 10范围内的偶数
    
    # 随机选择一个返回值
    n5 = random.choice([1,'23',['a','c']])  #返回列表长得一个元素
    n6 = random.sample((1,'23',['a','c']),2) #随机返回列表中的两个组合,原序列不变,返回值顺序不定
    n7 = random.sample('12345',3)  #原序列不变,返回值顺序不定
    # 这里的范围必须是有序类型的数据:Population must be a sequence or set,不能是字典和int类型
    
    # 打乱列表顺序,仅限列表
    li = [1,2,3,4,5,6]
    random.shuffle(li)
    print(li)
    

    【练习】生成4位校验码

    import random
    def auth_num():
        s = ''
        for i in range(4):
            num = random.randint(0,9)
            alp = chr(random.randint(65,90))
            ALP = chr(random.randint(97,122))  #chr的作用Return a Unicode string of one character with ordinal i
            add = random.choice([num,alp,ALP])
            s += str(add)
        return s
    code = auth_num()
    print(code)
    

    仅供参考,欢迎指正
  • 相关阅读:
    @SpringBootApplication
    springboot自动装配介绍
    WebServerInitializedEvent &ApplicationRunner
    springboot 潜入式web容器
    Unable to import maven project: See logs for details
    spring boot2 运行环境
    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:2.1.1:war
    DefaultHandlerExceptionResolver : Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
    idea中maven下载jar包不完整问题
    Python_报错:SyntaxError: EOL while scanning string literal
  • 原文地址:https://www.cnblogs.com/jjzz1234/p/11106636.html
Copyright © 2020-2023  润新知