IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]5. 数据类型库

    caimouse发表于 2015-11-15 09:53:33
    love 0

    5. 数据类型库

    本库主要描述了不同数据类型的使用,比如日期类型、时间类型、固定类型数组、堆队列、同步队列和集合。Python也提供了很多内置数据类型,比如dict、list、set和frozenset、tuple。以及str类支持Unicode字符串,bytes类保存二进制数据。下面来学习数据类型库提供更多的数据类型。

    5.1 datetime--基本日期和时间类型

    本模块datetime提供了对日期和时间进行简单或者复杂的使用方法。并且提供日期和时间的数学上运算,对日期和时间进行抽取部分内容使用,同时具有格式化和操作方便性。与此相关内容的模块还有time和calendar模块。

     

    datatime模块提供下面的常量:

    datetime.MINYEAR 

    在date和datetime对象里允许设置最小的年数。默认MINYEAR等于1.

    datetime.MAXYEAR 

    在date和datetime对象里允许设置最大的年数。默认MAXYEAR等于9999.

    例子:

    #python 3.4.3

    import datetime

     

    print('datetime.MINYEAR:', datetime.MINYEAR)

    print('datetime.MAXYEAR:', datetime.MAXYEAR)

    结果输出如下:

    datetime.MINYEAR: 1

    datetime.MAXYEAR: 9999

    5.1.1 可用类型

    class datetime.date 

    表示原始日期,使用公历日历。常用的属性是year、month和day。

    例子:

    #python 3.4.3

    import datetime

     

    dt = datetime.date

    print('date:', dt.max)

    print('date:', dt.today())

    结果输出如下:

    date: 9999-12-31

    date: 2015-10-23

     

    class datetime.time 

    一个理想化的时间类,假定每天都有24*60*60秒时间。属性有:hour、minute、second、microsecond和tzinfo。

    例子:

    #python 3.4.3

    import datetime

     

    dt = datetime.time

    print('time:', dt.max)

    print('time:', dt.resolution)

    结果输出如下:

    time: 23:59:59.999999

    time: 0:00:00.000001

     

    class datetime.datetime 

    组合了类date和类time的功能。拥有属性有:year、month、day、hour、minute、second 、microsecond和tzinfo。

    例子:

    #python 3.4.3

    import datetime

     

    dt = datetime.datetime

    print('date:', dt.today())

    print('time:', dt.max)

    print('time:', dt.resolution)

    结果输出如下:

    date: 2015-10-26 08:43:16.594399

    time: 9999-12-31 23:59:59.999999

    time: 0:00:00.000001

     

    class datetime.timedelta 

    表示两个日期或时间或日期时间之间的差,精度到毫秒(ms)。

    例子:

    #python 3.4.3

    import datetime

     

    to = datetime.datetime(2015, 10, 26)

    dd = to - datetime.timedelta(days = 100)

    print(to, dd)

    结果输出如下:

    2015-10-26 00:00:00 2015-07-18 00:00:00

     

    class datetime.tzinfo 

    抽象表示的时区信息对象。主要用在datetime和time对象里,提供一个时区的调整,根据时区来计算时间差别。

    例子:

    #python 3.4.3

    import datetime

     

    #使用时区类datetime.tzinfo

    class UTC(datetime.tzinfo):

        """UTC"""

        def __init__(self,offset = 0):

            self._offset = offset

     

        def utcoffset(self, dt):

            return datetime.timedelta(hours=self._offset)

     

        def tzname(self, dt):

            return "UTC +%s" % self._offset

     

        def dst(self, dt):

            return datetime.timedelta(hours=self._offset)

     

    #北京时间

    beijing = datetime.datetime.now(tz = UTC(8))

     

    #曼谷时间

    bangkok = datetime.datetime.now(tz = UTC(7))

     

    #北京时间转成曼谷时间

    beijing.astimezone(UTC(7))

    #计算时间差时也会考虑时区的问题

    print(beijing, bangkok)

    timespan = beijing - bangkok

    print(timespan)

    结果输出如下:

    2015-10-27 00:44:05.520355+08:00 2015-10-27 00:44:05.520355+07:00

    -1 day, 23:00:00

     

    class datetime.timezone 

    一个实现datetime.tzinfo接口的派生类,主要用来管理UTC时区。

    例子:

    #python 3.4.3

    import datetime

     

    tz = datetime.timezone(datetime.timedelta(hours = 8), 'UTCsHH:MM')

    print(tz.utc)

    print(tz.tzname)

    结果输出如下:

    UTC+00:00

    <built-in method tzname of datetime.timezone object at 0x029AB280>

     

    上面所有类型的对象都是不修改的对象,其对象的派生关系如下:

    object

        timedelta

        tzinfo

            timezone

        time

        date

            datetime

    从这里可以看到所有类都派生于对象object,timezone派生于tzinfo类,datetime派生于time和date类。


    蔡军生  QQ:9073204 深圳



沪ICP备19023445号-2号
友情链接