zoukankan      html  css  js  c++  java
  • python 之 time 和 datetime 模块

    几个术语了解

    • 时间戳 (timestamp) 的方式:通常来说,时间戳表示的是从 1970 年 1 月1日开始按秒计算的偏移量 (time.gmtime (0)) 此模块中的函数无法处理 1970 纪元年以前的时间或太遥远的未来 (处理极限取决于 C 函数库,对于 32 位系统而言,是 2038 年)
    • UTC (Coordinated Universal Time, 世界协调时) 也叫格林威治天文时间,是世界标准时间.在我国为 UTC+8
    • DST(Daylight Saving Time) 即夏令时

    一、time 模块的使用

    • time.time()
      获取当前时间戳(以秒为单位的浮点型的时间戳)
      print(time.time())
      >>>1539847769.6119404
    • time.localtime(seconds=None)
      默认获取当前时间的结构化时间
      print(time.localtime())
      >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=35, tm_sec=0, tm_wday=3, tm_yday=291, tm_isdst=0)
    • time.mktime(p_tuple)
      将结构化时间转化成时间戳格式
      print(time.mktime(time.localtime()))
      >>>1539849828.0
      注意和 time.time () 的区别:
      print(time.time())
      1539849828.090503
    • time.strftime(format, p_tuple=None)
      格式化时间(字符串)
      print(time.strftime("%Y-%m-%d %H:%M:%S"))
      >>>2018-10-18 15:56:42
    • time.strptime(string, format)
      将格式化时间转成结构化时间
      print(time.strptime("2018-10-18 15:56:42","%Y-%m-%d %H:%M:%S"))
      >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=15, tm_min=56, tm_sec=42, tm_wday=3, tm_yday=291, tm_isdst=-1)
    • time.gmtime(seconds=None)
      默认当前 UTC 时间转结构化时间,与英国伦敦当地时间一致
      print(time.gmtime(time.time()))
      >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=8, tm_min=10, tm_sec=16, tm_wday=3, tm_yday=291, tm_isdst=0)
    • time.sleep(secends)
      线程推迟指定的时间运行

    附一:


     
    image.png

    附二:time 时间之间的转换


     
    image.png

    二、datetime 模块的使用

    datetime 模块定义了 5 个类,分别是

    • 1.datetime.date:是指年月日构成的日期 (相当于日历)
    • 2.datetime.datetime:是指时分秒微秒构成的一天 24 小时中的具体时间 (相当于手表)
    • 3.datetime.time:上面两个合在一起,既包含时间又包含日期
    • 4.datetime.timedelta:表示时间间隔,即两个时间点的间隔
    • 5.datetime.tzinfo:时区的相关信息

    1. datetime.date 类

    • date 类有三个参数,datetime.date (year,month,day),返回 year-month-day
      print(datetime.date(2017,12,1))
      >>>2017-12-01
    • datetime.date.today()
      获取当前时间的年月日
      print(datetime.date.today())
      >>>2018-10-18
    • datetime.date.isoweekday(cls)
      获取指定日期是星期几,1 = 周一,7 = 周天
      a = datetime.date.today()
      print(datetime.date.isoweekday(a))
      >>>4
    • datetime.date.weekday(cls)
      获取指定日期是星期几,0 = 周一,6 = 周天
      a = datetime.date.today()
      print(datetime.date.weekday(a))
      >>>3
    • datetime.date.fromtimestamp (时间戳)
      将时间戳转化成特定格式的年月日
      print(datetime.date.fromtimestamp(1539847769))
      >>>2018-10-18
    • cls.timetuple() 将特定格式的日期转化成结构化时间
      a = datetime.date.today()
      print(a.timetuple())
      >>>time.struct_time(tm_year=2018, tm_mon=10, tm_mday=18, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=291, tm_isdst=-1)
    • cls.replace(year=2010) 替换指定的年月日
      a = datetime.date.today()
      print(a.replace(year=2010))
      >>>2010-10-18

    2. datetime.time 类

    • time 类有 5 个参数,datetime.time (hour,minute,second,microsecond,tzoninfo)
      print(datetime.time(8,5,32))
      print(datetime.time(8,5,32,32))
      >>>08:05:32
      >>>08:05:32.000032

    • cls.strftime ("时间格式")
      指定时间格式
      a= datetime.time(8,5,32,32)
      print(a.strftime("%H:%M"))
      >>>08:05

    • cls.replace()
      替换时分秒
      a= datetime.time(8,5,32,32)
      print(a.replace(hour=18))
      >>>18:05:32.000032

    • datetime.time.tzname()
      返回时区名字:略

    • datetime.time.utcoffset()
      返回时区的时间偏移量:略

    3. datetime.datetime 类

    datetime 模块类的使用大同小异,有很多方法我们可能这辈子都用不上,datetime 类的方法比较多,在这里我就捡重点的列一下:

    • datetime.datetime.now() 或者 datetime.datetime.today()
      得到当前的具体时间(不指定时区时两个方法一样的效果)
      print(datetime.datetime.now())
      >>>2018-10-18 19:15:17.691425
    • datetime.datetime.now().date()
      返回当前时间的年月日部分
      print(datetime.datetime.now().date())
      >>>2018-10-18
    • datetime.datetime.now().time()
      返回当前时间的时分秒... 部分
      print(datetime.datetime.now().time())
      >>>19:16:54.497104
    • datetime.datetime.strftime()
      由日期格式转化为字符串格式
      print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
      >>>2018-10-18 19:21:13
    • datetime.datetime.strptime()
      由字符串格式转化为日期格式
      a = datetime.datetime.strptime("2018-10-18 19:21:37",'%Y-%m-%d %H:%M:%S')
      print(a,type(a))
      >>>2018-10-18 19:21:37 <class 'datetime.datetime'>

    4. datetime.timedelta 类

    datetime.datetime.timedelta 用于计算两个日期之间的差值:

    import datetime
    
    a = datetime.datetime(2015, 10, 3)
    
    b = datetime.datetime.now()
    
    res1 = (b - a)
    res2 = (b - a).days   //  取时间差天数
    res3 = (b - a).seconds   // 取时间差时分秒部分的秒数总和
    res4 = (b - a).microseconds  // 取时间差 秒数之后的微秒数
    res5 = (b - a).total_seconds()  // 时间差的总秒数
    
    print(res1)   >>> 1111 days, 19:48:35.543523
    print(res2)   >>> 1111
    print(res3)   >>> 71315
    print(res4)   >>> 71315
    print(res5)   >>> 96061715.543523
    
     
    image.png


    作者:SlashBoyMr_wang
    链接:https://www.jianshu.com/p/6acaaa0f3987
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    【加密】 RSA
    【Resource】【ResourceLoader】【ResourcePatternResolver】学习
    【拦截器】Springboot项目之拦截器使用
    【OpenSSl】linux下OpenSSL的RSA密钥生成
    【微服务架构】图解
    【md5】几种常见的数据摘要算法(MD5、CRC32、SHA1和SHA256)
    【VM VirtualBox】【Vagrant】的安装及使用
    VUE中解决echarts数据二次渲染不成功的问题xAxis
    TypeError: Cannot read property 'map' of null
    VS code 卡顿很严重
  • 原文地址:https://www.cnblogs.com/reaix/p/12268029.html
Copyright © 2011-2022 走看看