zoukankan      html  css  js  c++  java
  • 时间模块

    time 模块

    一 time模块的时间表现格式

      a、timestamp时间戳,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量

    
    

      b、struct_time时间元组,共有九个元素组。

    
    

      c、format time 格式化时间,已格式化的结构使时间更具可读性。包括自定义格式和固定格式。

    
    
     时间格式转换导图

    二 互相转换实例

    import
     time
    # 1.时间戳 t = time.time()        # 获取当前时间戳 ---> 1553049266.159761 st = int(t)              # 秒级时间戳    ---> 1553049298 mst = int(round(t * 1000))      # 毫秒级时间戳 ---> 1553049298371 nowTime = lambda:int(round(t * 1000)) print(nowTime()) # 毫秒级时间戳,基于lambda  ---> 1553049298371

    # 2.时间元组
    time.struct_time(tm_year=2019, tm_mon=3, tm_mday=20, tm_hour=10, tm_min=54, tm_sec=58, tm_wday=2, tm_yday=79, tm_isdst=0)
    time.localtime()     # 时间元组,默认为当前时间
    time.localtime(1553050658.185377)  # 将时间戳转换为时间元组

    # 3.可视化时间 Wed Mar 20 11:00:12 2019
    time.ctime()       # 可视化的时间,默认为当前时间
    time.ctime(
    1553050658.185377)    # 将时间戳转换为可视化的时间格式

    # 4.时间元组 ---> 时间戳
    time.mktime((2019,3,20,11,5,57,2,79,0)) # 1553051157.0
    # 5.时间元组 ---> 可视化时间  'Wed Mar 20 11:11:03 2019'
    time.asctime()      # 可视化的时间,默认为当前时间
    time.asctime((2019,3,20,11,5,57,2,79,0))  # 将时间元组转换为可视化的时间格式
    time.asctime(time.localtime(1553051598.7391522))  # 将时间戳转换为时间元组后,再转化为可视化时间
    # 6.时间元组 ---> 知道格式的可视化时间 : time.strftime(要转换成的格式, 时间元组)
    time.strftime("%Y-%m-%d %X")
    time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) # 2019-03-20 11:17:43
    # 7.指定格式的可视化时间 ---> 时间元组 : time.strptime(时间字符串, 时间字符串的格式)
    print(time.strptime('2019-03-20 11:17:43', '%Y-%m-%d %H:%M:%S'))
    # 8.浮点数秒数,用于衡量不同程序的耗时,前后两次调用的时间差
    time.clock()

    # 9.格林威治时间
    time.gmtime()
    time.gmtime(time.time())

    # 10.时间元组的属性-值

    属性 值 tm_year(年) 比如1999 tm_mon(月) 1 - 12 tm_mday(日) 1 - 31 tm_hour(时) 0 - 23 tm_min(分) 0 - 59 tm_sec(秒) 0 - 61 tm_wday(weekday) 0 - 6(0表示周日) tm_yday(一年中的第几天) 1 - 366 tm_isdst(是否是夏令时) 默认为-1


    strftime : 时间对象 ---> 字符串对象 ; strptime : 字符串对象 ---> 时间对象 
    print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'))  # 将日期格式化输出 ---> 2019-03-20 10:55:42

    datetime 模块

    datatime模块重新封装了time模块,提供的类有:date,time,datetime,timedelta,tzinfo。

    一. date类

    # 1.静态方法和字段
    date.max :date对象所能表示的最大日期。datetime.date(9999, 12, 31)
    date.min : date对象所能表示的最小日期。datetime.date(1, 1, 1)
    date.resolution :date对象表示日期的最小单位,这里是天

    date.today() :返回一个'表示当前本地日期'的date对象

    date.fromtimestamp(timestamp) :根据给定的时间戮,返回一个date对象


    # 2.方法和属性
    d1 = date(2011,6,3)           # 创建date对象
    d1.year、date.month、date.day      # date对象的年、月、日属性
    d2 = d1.replace(year, month, day)  # 生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
    d1.timetuple()              # 返回日期对应的时间元组(time.struct_time)对象;
    d1.weekday()               # 返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推;
    d1.isoweekday()             # 返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推;
    d1.isocalendar()            # 返回格式:(year,month,day)的元组,eg : (2019,3,20)
    d1.isoformat()             # 返回格式如'YYYY-MM-DD’的字符串;'2019-03-03'
    d1.strftime("%Y-%m-%d %X")      # 和time模块format相同。

    二. time类

    # 1.静态方法和字段
    time.min :time类所能表示的最小时间。datetime.time(0, 0)
    time.max : time类所能表示的最大时间。datetime.time(23, 59, 59, 999999)
    time.resolution :time对象表示时间的最小单位,这里是1微秒
     
    # 2.方法和属性
    t1 = datetime.time(10,23,15)                # 创建time对象
    t1.hour、t1.minute、t1.second、t1.microsecond       # time对象的时、分、秒、微秒属性 t1.tzinfo                            # 时区信息         t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ) # 创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性(原有对象仍保持不变); t1.isoformat()                         # 返回型如"HH:MM:SS"格式的字符串表示; t1.strftime(fmt)                        # 同time模块中的format;


    三. datetime类 : 相当于date&time的结合体

    # 1.静态方法和字段

    注: from datetime import datetime
    datetime.today()                        # 返回一个表示当前本地时间的datetime对象;
    datetime.now([tz])                       # 返回一个表示当前本地时间的datetime对象,如果提供了参数tz,则获取tz参数所指时区的本地时间;
    datetime.utcnow()                       # 返回一个当前utc时间的datetime对象;格林威治时间 
    datetime.fromtimestamp(timestamp[, tz])          # 根据时间戮创建一个datetime对象,参数tz指定时区信息;
    datetime.utcfromtimestamp(timestamp)           # 根据时间戮创建一个datetime对象;
    datetime.combine(date, time)                # 根据date和time,创建一个datetime对象;
    datetime.strptime(date_string, format)          # 将格式字符串转换为datetime对象;

    # 2.方法和属性
    dt = datetime.now()                              # datetime对象
    dt.year、month、day、hour、minute、second、microsecond、tzinfo    # datetime对象的年,月,日,时、分、秒、微秒属性
    dt.date()        # 获取date对象
    dt.time()        # 获取time对象
    dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ])  # 创建新的date对象
    dt. timetuple () dt. utctimetuple () dt. toordinal () dt. weekday () dt. isocalendar () dt. isoformat ([ sep] ) dt. ctime () # 返回一个日期时间的C格式字符串,等效于time.ctime(time.mktime(dt.timetuple())); dt. strftime (format)
    四. timedelta类 : 时间加减

    from  datetime import *
    
    dt = datetime.now()          # 日期减一天
    dt1 = dt + timedelta(days=-1)    # 昨天
    dt2 = dt - timedelta(days=1)     # 昨天
    dt3 = dt + timedelta(days=1)     # 明天
    delta_obj = dt3-dt           # datetime.timedelta(0, 86284, 691779)
    print(type(delta_obj))        # <type 'datetime.timedelta'> 1 day, 0:00:00
    print(delta_obj.days ,delta_obj.total_seconds())  # 0, 86284.691779

    五. tzinfo时区类

    from datetime import datetime, tzinfo,timedelta
    
    """
    tzinfo是关于时区信息的类
    tzinfo是一个抽象类,所以不能直接被实例化
    """
    class UTC(tzinfo):
        """UTC"""
        def __init__(self,offset = 0):
            self._offset = offset
    
        def utcoffset(self, dt):
            return timedelta(hours=self._offset)
    
        def tzname(self, dt):
            return "UTC +%s" % self._offset
    
        def dst(self, dt):
            return timedelta(hours=self._offset)
    
    #北京时间
    beijing = datetime(2011,11,11,0,0,0,tzinfo = UTC(8))
    print("beijing time:",beijing)
    #曼谷时间
    bangkok = datetime(2011,11,11,0,0,0,tzinfo = UTC(7))
    print("bangkok time",bangkok)
    #北京时间转成曼谷时间
    print("beijing-time to bangkok-time:",beijing.astimezone(UTC(7)))
    
    #计算时间差时也会考虑时区的问题
    timespan = beijing - bangkok
    print("时差:",timespan)
    
    #Output==================
    # beijing time: 2011-11-11 00:00:00+08:00
    # bangkok time 2011-11-11 00:00:00+07:00
    # beijing-time to bangkok-time: 2011-11-10 23:00:00+07:00
    # 时差: -1 day, 23:00:00

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

    转载: https://blog.csdn.net/ni357103403/article/details/51579027

    符号       说明                                     例子   
    %a        英文星期的简写                          Mon
     %A         英文星期的完整编写                        Monday
     %b         英文月份的简写                          Jun
     %B        英文月份的完整编写                      June
     %c        显示本地的日期和时间                        06/30/14 01:03:17
     %I        小时数,取值在01~12之间                     01
     %j      显示从本年第一天开始到当天的天数                     181
     %w     (week)  显示今天是星期几,0表示星期天                1
     %W        显示当天属于本年的第几周,星期一作为一周的第一天进行计算     26  ==> 26*7 = 182天
     %x       本地的当天日期                         06/30/14
     %X       本地的当天时间                        01:09:54
     %y       年份,取值在00~99之间                     14
    %Y      年份完整的拼写                          2014
    %m      (month) 月份,取值在01~12之间                 06
    %d         (day) 日期数,取值在1~31之间                  30
    %H       (Hour)  小时数,取值在00~23之间                 01
    %M     (Minute) 分钟数,取值在01~59之间                04
    %S       秒                               58

  • 相关阅读:
    HTTP请求中的GET-POST方式
    拦截器与过滤器的不同点
    SQL练习题(一)
    Maven聚合工程安装时排除掉不参与本次安装的子工程
    codeforce 796C
    [CF1216E] Numerical Sequence hard version
    【floyd+矩阵乘法】POJ 3613 Cow Relays
    BZOJ 3573米特运输
    Poj 3977 Subset
    【树形dp】Bzoj 1040骑士
  • 原文地址:https://www.cnblogs.com/hsmwlyl/p/10564375.html
Copyright © 2011-2022 走看看