5. 数据类型库
本库主要描述了不同数据类型的使用,比如日期类型、时间类型、固定类型数组、堆队列、同步队列和集合。Python也提供了很多内置数据类型,比如dict、list、set和frozenset、tuple。以及str类支持Unicode字符串,bytes类保存二进制数据。下面来学习数据类型库提供更多的数据类型。
本模块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
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 深圳
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/caimouse/article/details/49847185