zoukankan      html  css  js  c++  java
  • python常用模块-time和datatime

    一、time模块

     time模块中时间表现的格式主要有三种:

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

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

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

    1、时间格式转换图:

    2、主要time生成方法和time格式转换方法实例:

      生成timestamp(时间戳)

    复制代码
    1 >>> 
    2 >>> import time
    3 >>> time.time()
    4 1491631287.1797802
    5 >>> #由struct_time生成timestamp
    6 >>> time.mktime(time.localtime())
    7 1491631461.0       #后面始终都是一位小数,0 ?
    8 >>> 
    复制代码

      生成struct_time (时间元组)

    复制代码
     1 >>> #直接生成时间元组
     2 >>> time.localtime()
     3 time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=14, tm_min=7, tm_sec=20, tm_wday=5, tm_yday=98, tm_isdst=0)
     4 >>> #把时间戳转换为时间元组
     5 >>> time.localtime(time.time())
     6 time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=14, tm_min=8, tm_sec=5, tm_wday=5, tm_yday=98, tm_isdst=0)
     7 >>> #把localtime()换为gmtime() 就表示格林威治时间
     8 >>> 
     9 >>> #把格式化时间转换为时间元组
    10 >>> time.strptime('2017-4-8 14:12:12','%Y-%m-%d %X')
    11 time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=14, tm_min=12, tm_sec=12, tm_wday=5, tm_yday=98, tm_isdst=-1)
    12 >>> time.strptime('2017-4-8','%Y-%m-%d')
    13 time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=98, tm_isdst=-1)
    14 >>> 
        
          属性 值
        tm_year(年)                  比如2017 
        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
    复制代码

      生成format_time (格式化时间)

    复制代码
    1 >>> 
    2 >>> #直接生成format_time
    3 >>> time.strftime('%Y-%m-%d %X')
    4 '2017-04-08 14:16:11'
    5 >>> 
    6 >>> #把struct_time转换为format_time
    7 >>> time.strftime('%Y-%m-%d %X',time.localtime())
    8 '2017-04-08 14:17:30'
    9 >>> 
          %Y 年 Year with century as a decimal number.
          %m 月 Month as a decimal number [01,12].
          %d 日 Day of the month as a decimal number [01,31].
          %H 时 Hour (24-hour clock) as a decimal number [00,23].
          %M 分 Minute as a decimal number [00,59].
          %S 秒 Second as a decimal number [00,61].
          %z Time zone offset from UTC.
          %a 周几简写(英文Sun) Locale's abbreviated weekday name.
          %A 周几全名(英文Sunday) Locale's full weekday name.
          %b 月份简写(英语Apr) Locale's abbreviated month name.
          %B 月份全名(英语April) Locale's full month name.
          %c Locale's appropriate date and time representation.
          %I 十二小时制小时数 Hour (12-hour clock) as a decimal number [01,12].
          %p AM/PM Locale's equivalent of either AM or PM.
    %X 本地相应时间
          %x 本地相应日期
    复制代码

      生成固定格式的时间表示格式

    复制代码
     1 >>> time.asctime()
     2 'Sat Apr  8 14:20:04 2017'
     3 >>>
     4 >>> time.ctime()
     5 'Sat Apr  8 14:20:09 2017'
     6 >>> 
     7 >>> time.asctime(time.localtime())
     8 'Sat Apr  8 14:20:27 2017'
     9 >>>
    10 >>> time.ctime(time.time())
    11 'Sat Apr  8 14:20:44 2017'
    复制代码

     3、time加减

    复制代码
     1 >>> 
     2 >>> #timestamp加减是以秒为单位
     3 >>> import time
     4 >>> t1 = time.time()
     5 >>> t2 = t1 + 10
     6 >>> t1
     7 1491634614.3497803
     8 >>> t2
     9 1491634624.3497803
    10 >>> 
    复制代码

    二、datetime模块

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

    1、date类

    datetime.date(year, month, day)

    静态方法和字段

    date.max、date.min:date对象所能表示的最大、最小日期;
    date.resolution:date对象表示日期的最小单位。这里是天。
    date.today():返回一个表示当前本地日期的date对象;
    date.fromtimestamp(timestamp):根据给定的时间戮,返回一个date对象;
    复制代码
     1 >>> import datetime
     2 >>> datetime.date.max
     3 datetime.date(9999, 12, 31)
     4 >>> datetime.date.min
     5 datetime.date(1, 1, 1)
     6 >>> datetime.date.resolution
     7 datetime.timedelta(1)
     8 >>> datetime.date.today()
     9 datetime.date(2017, 4, 8)
    10 >>> datetime.date.fromtimestamp(time.time())
    11 datetime.date(2017, 4, 8)
    12 >>> 
    复制代码

    方法和属性

    复制代码
    d1 = date(2017,4,8)  #date对象(年月日都不能是以0开头 (2017,04,08)错误 )
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    >>> d1 = datetime.date(2017,4,8)
    >>> d1
    datetime.date(201748)
    >>> d1.year
    2017
    >>> d1.month
    4
    >>> d1.day
    8
    >>>
    d1.replace(year, month, day):生成一个新的日期对象,用参数指定的年,月,日代替原有对象中的属性。(原有对象仍保持不变)
    1
    2
    3
    4
    5
    6
    >>> d2 = d1.replace(2017,3,20)
    >>> d1
    datetime.date(201748)
    >>> d2
    datetime.date(2017320)
    >>>
    d1.timetuple():返回日期对应的time.struct_time对象; 
    1
    2
    3
    >>> d1.timetuple()
    time.struct_time(tm_year=2017, tm_mon=4, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=5, tm_yday=98, tm_isdst=-1)
    >>>
    d1.weekday():返回weekday,如果是星期一,返回0;如果是星期2,返回1,以此类推; 
    1
    2
    3
    >>> d1.weekday()
    5       #周六
    >>>
    d1.isoweekday():返回weekday,如果是星期一,返回1;如果是星期2,返回2,以此类推; 
    1
    2
    3
    >>> d1.isoweekday()
    6      #周六   weekday镜像?
    >>>
    d1.isocalendar():返回格式如(year,sum_week,day)的元组; 
    1
    2
    3
    4
    5
    >>> d1
    datetime.date(201748)
    >>> d1.isocalendar()
    (2017146)          #第一个是2017年, 14是 当前为今年的第14周  6 表示 第14周结束后过了6天(当前是15周)
    >>>
    d1.isoformat():返回格式如'YYYY-MM-DD’的字符串; 
    1
    2
    3
    >>> d1.isoformat()
    '2017-04-08'
    >>>
    d1.strftime(fmt):和time模块format相同。
    1
    2
    3
    >>> d1.strftime('%Y-%m-%d')
    '2017-04-08'
    >>>
    复制代码

    2、time类

    datetime.time(hour[ , minute[ , second[ , microsecond[ , tzinfo] ) 

    静态方法和字段

    复制代码
    time.min、time.max:time类所能表示的最小、最大时间
    1
    2
    3
    4
    5
    6
    >>> import datetime
    >>> datetime.time.min
    datetime.time(00)
    >>> datetime.time.max
    datetime.time(235959999999)
    >>>
    time.resolution:时间的最小单位,这里是1微秒;
    1
    2
    3
    >>> datetime.time.resolution
    datetime.timedelta(001)      #秒,毫秒,微秒
    >>>
    复制代码

    方法和属性

    复制代码
    t1 = datetime.time(10,23,15)  #time对象 时,分,秒...
    t1.hour、t1.minute、t1.second、t1.microsecond:时、分、秒、微秒;
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    >>> t = datetime.time(15,30,20)
    >>> t
    datetime.time(153020)
    >>> t.hour
    15
    >>> t.minute
    30
    >>> t.second
    20
    >>> t.microsecond
    0
    >>>
    t1.tzinfo:时区信息;
    t1.replace([ hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ):创建一个新的时间对象,用参数指定的时、分、秒、微秒代替原有对象中的属性
    (原有对象仍保持不变);
    t1.isoformat():返回型如"HH:MM:SS"格式的字符串表示;
    t1.strftime(fmt):同time模块中的format;
    复制代码

    3、datetime类

    datetime相当于date和time结合起来。
    datetime.datetime (year, month, day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] )

    静态方法和字段

    复制代码
    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对象;
    复制代码

    方法和属性

    复制代码
    dt=datetime.now()#datetime对象
    dt.year、month、day、hour、minute、second、microsecond、tzinfo:
    dt.date():获取date对象;
    dt.time():获取time对象;
    dt. replace ([ year[ , month[ , day[ , hour[ , minute[ , second[ , microsecond[ , tzinfo] ] ] ] ] ] ] ]):
    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)
    复制代码

    4.timedelta类,时间加减

    使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法。

    复制代码
     1 >>> import datetime
     2 >>> d = datetime.datetime.now()
     3 >>> d
     4 datetime.datetime(2017, 4, 8, 15, 42, 1, 656144) 8 >>> d1 = d + datetime.timedelta(days=-1)      #昨天
     9 >>> d1
    10 datetime.datetime(2017, 4, 7, 15, 42, 1, 656144)
    11 >>> d2 = d - datetime.timedelta(days=1)      #昨天
    12 >>> d2
    13 datetime.datetime(2017, 4, 7, 15, 42, 1, 656144)
    14 >>> d3 = d + datetime.timedelta(days=1)          #明天
    15 >>> d3     
    16 datetime.datetime(2017, 4, 9, 15, 42, 1, 656144)
    17 >>> 
    复制代码

     5、tzinfo时区类

    复制代码
    #! /usr/bin/python
    # coding=utf-8
    
    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
  • 相关阅读:
    METHODS OF AND APPARATUS FOR USING TEXTURES IN GRAPHICS PROCESSING SYSTEMS
    Display controller
    Graphics processing architecture employing a unified shader
    Graphics-Processing Architecture Based on Approximate Rendering
    Architectures for concurrent graphics processing operations
    Procedural graphics architectures and techniques
    DYNAMIC CONTEXT SWITCHING BETWEEN ARCHITECTURALLY DISTINCT GRAPHICS PROCESSORS
    Thermal zone monitoring in an electronic device
    System and method for dynamically adjusting to CPU performance changes
    Framework for Graphics Animation and Compositing Operations
  • 原文地址:https://www.cnblogs.com/pingfanvbn/p/10955296.html
Copyright © 2011-2022 走看看