• python模块之时间模块


    time模块

     表示时间的三种方式

    1. 时间戳(timestamp)

    时间戳表示的是从1970年1月1日0时0分到当前时间的时间差,以秒计(浮点数),获取时间戳的方式为time.time()

    2. 格式化的时间字符串(format string)

    带格式的时间,也就是我们平时用到的时间,如"2018-12-18"

    python中时间日期格式化符号

    %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 当前时区的名称
    %% %号本身

    3. 结构化时间(struc_time)

    结构化时间是一个包含9个元素的元组,元素分别是年、月、日、时、分、秒、一年中第几周、一年中第几天、是否是夏令时

     示例:

    import time
    print(time.time())   # 1547215687.22852
    print(time.strftime("%Y-%m-%d %H:%M:%S"))   # 2019-01-11 22:08:59
    
    # 时间元组:localtime将一个时间戳转化成当前时区的struct_time
    print(time.localtime())   # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=11, tm_sec=29, tm_wday=4, tm_yday=11, tm_isdst=0)

    三种时间格式之间的转化

     

    # 格式化时间----> 结构化时间
    ft = time.strftime("%Y-%m-%d %H:%M:%S")
    print(ft)   # 2019-01-11 22:46:41
    st = time.strptime(ft, "%Y-%m-%d %H:%M:%S")  # 第一个参数为格式化时间,第二个参数为具体格式
    print(st)   # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=47, tm_sec=27, tm_wday=4, tm_yday=11, tm_isdst=-1)
    
    # 结构化时间----> 时间戳
    t = time.mktime(st)
    print(t)   # 1547218165.0
    
    # 时间戳----> 结构化时间
    t = time.time()
    st = time.localtime(t)
    print(st)    # time.struct_time(tm_year=2019, tm_mon=1, tm_mday=11, tm_hour=22, tm_min=50, tm_sec=41, tm_wday=4, tm_yday=11, tm_isdst=0)
    
    # 结构化时间----> 格式化时间
    ft = time.strftime("%Y-%m-%d %H:%M:%S", st)  # 第一个参数为时间格式,第二个参数为结构化时间
    print(ft)   # 2019-01-11 22:52:12
    三种时间格式之间的转换

    4. asctime

    python提供了一种默认的格式化时间asctime,格式为%a %b %d %H:%M:%S %Y

    # asctime
    
    # 结构化时间----> %a %b %d %H:%M:%S %Y串
    # time.asctime(结构化时间)如果不穿参数。直接返回当前时间的格式化串
    # print(time.asctime())   # Sat Jan 12 09:52:38 2019
    # st = time.localtime(1500000000)   # 时间戳转化成结构化时间
    # print(st)   # time.struct_time(tm_year=2017, tm_mon=7, tm_mday=14, tm_hour=10, tm_min=40, tm_sec=0, tm_wday=4, tm_yday=195, tm_isdst=0)
    # at = time.asctime(st)
    # print(at)   # Fri Jul 14 10:40:00 2017
    
    # 时间戳----> %a %b %d %H:%M:%S %Y串
    # time.ctime(时间戳)  如果不传参数,直接返回会当前时间的格式化串
    # print(time.ctime())  # Sat Jan 12 10:04:36 2019
    # print(time.ctime(2000000000))    # Wed May 18 11:33:20 2033
    
    # t = time.time()
    # ft = time.ctime(t)
    # print(ft)   # Sat Jan 12 10:08:13 2019
    asctime与结构化时间、时间戳之间的转换

    5. 计算时间差

    # 计算时间差
    # 1. 给出两个格式化时间,计算时间差
    ft1 = "2018-06-26 17:00:20"
    ft2 = "2018-06-27 17:00:20"
    # 思路:1. 把两个格式化时间转化成时间戳tt1和tt2
    #      2. tt2-tt1得到tt3
    #      3. 将tt3转化成结构化时间
    #      4. 提取结构化时间里的年月日,处理后得到时间差
    
    st1 = time.strptime(ft1, "%Y-%m-%d %H:%M:%S")  # 格式化时间--->结构化时间
    st2 = time.strptime(ft2, "%Y-%m-%d %H:%M:%S")
    
    tt1 = time.mktime(st1)    # 结构化时间--->时间戳
    tt2 = time.mktime(st2)
    
    tt3 = tt2 - tt1   # 时间戳相减
    st3 = time.localtime(tt3)   # 时间戳--->结构化时间(命名元组)  时间戳是从1970年1月1日0点0分0秒(格林威治时间);localtime是当地时间,所以tm_hour应该减去时区
    print(st3)
    print(st3.tm_year)   # 提取结构化时间里的年份
    print("过去了%s年%s个月%s天%s小时%s分%s秒" % (st3.tm_year-1970, st3.tm_mon-1, st3.tm_mday-1, st3.tm_hour-8, st3.tm_min, st3.tm_sec))   # 注意tm_hour要减8
    View Code

    datetime模块

    datetime主要用于调整时间

    import datetime
    # time1 = datetime.datetime(1998, 12, 18, 10, 8, 50)   # 调整到指定时间
    # print(time1)   # 1998-12-18 10:08:50
    #
    # time2 = datetime.datetime(year=1993, month=7, day=7, hour=12)  # 年月日必须指定,时分秒可以部分指定或不指定,需按照年月日时分秒的顺序
    # print(time2)   # 1993-07-07 12:00:00
    
    # 2. 根据当前时间指定时间
    current_time = datetime.datetime.now()  # 获取当前时间
    print(current_time)  # 2019-01-12 11:00:57.630978
    delta_time = datetime.timedelta(weeks=3)   # 3周后
    print(current_time+delta_time)   # 2019-02-02 11:03:33.487401
    print(current_time+datetime.timedelta(weeks=-3))  # 3周前
    print(current_time+datetime.timedelta(days=-5))  # 5天前
    print(current_time+datetime.timedelta(hours=6))   # 6天后
    
    # 注意:只能调整的字段 weeks days hours minutes seconds
    
    # 将时间戳转化成时间
    print(datetime.date.fromtimestamp(2247274932))    # 2041-03-19
    调整时间
  • 相关阅读:
    【从0开始学架构】架构设计三原则
    【Linux网络】端口
    【Python连接数据库】Python连接Teradata数据库-TD SQL Driver 方式(teradatasql包)
    【Python实战】python中含有中文字符无法运行
    【Linux基础】linux updatedb命令
    【Linux基础】查看和更改当前系统字符集(LC_ALL、LC_TYPE和LANG)
    【数据库】ODBC与JDBC
    LNMP安装目录及配置文件位置
    Linux Vi 的使用
    C#VS2017添加ReportViewer控件
  • 原文地址:https://www.cnblogs.com/zzliu/p/10237833.html
Copyright © 2020-2023  润新知