• python学习笔记2:时间


    感觉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)
    
  • 相关阅读:
    什么是线程安全?
    概念
    Spring boot 异常 EnvironmentCapable
    JAVA 日志级别
    线程生命周期
    js计算两日期相差的天数、月数
    多线程模拟火车票卖票-实现Runnable接口
    多线程模拟火车站卖票-继承Thread类
    元素的层级 字体相关样式 图标字体
    定位 相对定位 偏移量 绝对定位 固定定位 粘滞定位 水平和垂直布局
  • 原文地址:https://www.cnblogs.com/gaiqingfeng/p/13228866.html
Copyright © 2020-2023  润新知