Python3的基础模块一(datetime)

datetime模块

datetime.date类

datetime包含下面的模块
Python3的基础模块一(datetime)_第1张图片

Python3的基础模块一(datetime)_第2张图片

date类介绍

作用:date类用来处理日期信息
date类是datetime的内嵌类,实例化语法:
datetime.date(year,month,day)

参数介绍:
year年份、month月份及day日期

import datetime
t=datetime.date(2019,8,26)
print(type(t))
print(t.day,t.month,t.year)
#
#26 8 2019

day类常见操作

获取当天日期
语法:datetime.date.today

import datetime
a = datetime.date.today()
print(a)
print(a.day,a.month,a.day)
#2019-08-26
#26 8 26

date日期比较大小

Python3的基础模块一(datetime)_第3张图片

import datetime
a1 = datetime.date(2019,8,26)
a2 = datetime.date(2019,9,26)
print(a1<a2)
print(a2-a1)
#True
#31 days, 0:00:00

date类两个日期作差(求相差天数)

日期作差时间单位是天
Python3的基础模块一(datetime)_第4张图片

ISO标准化日历

语法:datetime.date.isocalendar()
返回一个包含三个值的元组(year,weeknumber,weebday):
year年份,weeknumber周序号,weekday星期序号(周一为1…周日为7)

得到ISO 8601标准的日期字符串

语法:isoformat()
返回符合YYYY-MM-DD格式的日期字符串

得到ISO8601标准指定日期的星期序号

语法:isweekday()
返回指定日期的星期序号

import datetime
a1 = datetime.date(2019,8,26)
print(a1.isocalendar())
print(a1.isoformat())
print(a1.isoweekday())
print(a1.weekday())
print(a1.replace(2018,4,30))
#(2019, 35, 1)
#2019-08-26
#1
#0
#2018-04-30

weekday方法

语法:date对象.weekday()
返回weekday,如果是星期一,返回0,如果星期2,返回1

replace替换方法

语法:date对象.replace(year,month,day)
返回一个替换指定日期字段的新date对象。注意替换是产生新对象,不影响原date对象

timetuple方法

语法:date对象.timetuple
返回值:为兼容time.localtime(…)返回一个类型为time.struct_time的数组,但时间部分元素值为0。返回值中tm_isdst表示是否时夏令时,1表示夏令时,-1表示不是夏令时。

toordinal方法

语法:date对象.toordinal()
返回值:返回公元公历开始到现在的天数,公园1年1月1日为1

import datetime
t=datetime.date(2019,8,26)
print(t.timetuple())
print(t.toordinal())
#time.struct_time(tm_year=2019, tm_mon=8, tm_mday=26, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=238, tm_isdst=-1)
#737297

date类重要属性

max属性

语法:datetime.date.max
返回date类所能表示的最大年、月、日数值

min属性

语法:datetime.date.min
返回date类所能表示的最小年、月、日数值

import datetime
print(datetime.date.max) 
print(datetime.date.min) 
#9999-12-31
#0001-01-01

(4)日期时间所有可能的格式化输出

Python3的基础模块一(datetime)_第5张图片

date类日期的格式化输出

语法:date对象.strftime(格式化字符串)
日期格式化字符帮助输出格式化的日期字符串

import datetime
t=datetime.date(2019,8,26)
a_str = t.strftime("%d/%m/%Y")
a_str1 = t.strftime("%Y")+a1.strftime("/%m")+a1.strftime("/%d")
a_str2 = t.strftime("%Y-%m-%d %H:%M:%S")
print(a_str)
print(a_str1)
print(a_str2)
print(t.strftime("%a"))
print(t.strftime("%D%%"))
print(t.strftime("%d-%m-%Y %H:%M:%S %f"))
print(t.ctime())
#26/08/2019
#2019/08/26
#2019-08-26 00:00:00
#Mon
#08/26/19%
#26-08-2019 00:00:00 000000
#Mon Aug 26 00:00:00 2019

ctime()方法输出日期格式

语法:date对象.ctime()
返回:ctime样式的日期格式

tzinfo时区类介绍

时区是当前时间与UTC时间的小时差,北京时区是东八区,所以时间比UTC格里尼时间早八个小时
由于tzinfo时区类无法实例化,因此要用到时区类需要继承tzinfo,创建子类。

datetime.time类

(1)time类介绍
作用:time类用来处理时间信息
time类是datetime的内嵌类
hour小时、minute分钟、second秒、microsecond微妙和tzinfo时区

import datetime
class UTC(datetime.tzinfo):#继承tzinfo
    def __init__(self,offset=0):
        self._offset = offset
    def utcoffset(self,dt):
        return datetime.timedelta(hours=self._offset)
    def tzname(self,dt):
        return "UTC+%d区" %self._offset
    def dst(self,dt):
        return datetime.timedelta(hours=self._offset)
offset=int((datetime.datetime.now()-datetime.datetime.utcnow()).total_seconds()/3600)
print(offset)
#8
beijing=datetime.datetime(2011,11,11,0,0,0,tzinfo=UTC(offset))
print(beijing)
#2011-11-11 00:00:00+08:00
bangkok=datetime.datetime(2011,11,11,0,0,0,tzinfo=UTC(7))
timespan=beijing-bangkok
print(type(timespan))
#
print(timespan)
#-1 day, 23:00:00
print(beijing.astimezone(UTC(7)))
#2011-11-10 23:00:00+07:00
bj=datetime.time(9,58,1,200,tzinfo=UTC(2))
print(bj)
#09:58:01.000200+02:00
t1=datetime.time(19,10,11)
t2=datetime.time(20,10,11)
print(t1<t2)
#True
t3=datetime.datetime.now().time()
print(t3)
#22:16:05.466821
print(t3.hour,t3.minute,t3.second,t3.microsecond)
#22 16 5 466821
print(t3.strftime("%M:%S:%H"))
#16:05:22
print(datetime.time.isoformat(t3))
#22:16:05.466821

(2)time类常用方法

时间比较大小
Python3的基础模块一(datetime)_第6张图片

datetime类获得当前时间方法

语法:datetime.datetime.now().time()
返回值:返回一个datetime.time类对象

time类时间的字符串格式化输出

语法:time对象.strftime(格式化字符串)或者datetime.time.strftime(time对象,格式化字符串)
返回值:格式化后的字符串

ISO标准时间格式输出

语法:datetime.isoformat(time对象)或者time对象.isoformat()
返回值:ISO标准格式时间字符串

time类常用属性

最大时间:datetime.time.max
最小时间:datetime.time.min
时间分辨率:datetime.time.resolution

import datetime
print(datetime.time.max)
print(datetime.time.min)
print(datetime.time.resolution)
#23:59:59.999999
#00:00:00
#0:00:00.000001

datetime类介绍

作用:date类可以同时获得日期和时间信息
date类是datetime的内嵌类,实例化语法:
datetime.datetime(year,month,day,hour,mintue,second,microsecond)

import datetime
t=datetime.datetime(2019,8,26,10,12,0,0)
print(t.strftime("%Y-%m-%d %H:%M:%S %f"))
#2019-08-26 10:12:00 000000

datetime类方法

now()

语法:datetime.datetime.now()
返回值:返回当前本地日期时间

utctimetuple()

语法:datetime对象.utctimetuple()
返回值:UTC时间元组

日期时间组合函数combine()

语法:datetime.datetime.combine(date对象,time对象)
返回值:返回一个date对象和一个time对象合成的date对象

当前UTC时间datetime.datetime.utcnow():返回当前日期的UTC datetime对象

得到时间的时间戳datetime.timestamp():从1970年1月1日0时0分0秒开始的时间秒数.微妙

从字符串解析出日期时间对象strptime()
语法:datetime.datetime.strptime(日期时间字符串)
返回值:根据日期时间字符串string和格式化字符串format2个参数,返回一个对应的datetime

从时间戳返回UTC日期时间utcfromtimestamp()
语法:UTC时间戳的datetime对象
返回值:从时间戳返回UTC的datetime对象

import datetime
time_now=datetime.datetime.now()
print(time_now)
#2019-08-26 23:11:33.716549

print(time_now.utctimetuple())
#time.struct_time(tm_year=2019, tm_mon=8, tm_mday=26, tm_hour=23, tm_min=11, tm_sec=33, tm_wday=0, tm_yday=238, tm_isdst=0)

print(datetime.datetime.combine(time_now.date(),time_now.time()))
#2019-08-26 23:11:33.716549

print(datetime.datetime.utcnow())
#2019-08-26 15:11:33.717545

print(time_now.timestamp())
#1566832293.716549

str_time="2010-11/10 23:10:9"
t=datetime.datetime.strptime(str_time,"%Y-%m/%d %H:%M:%S")
print(t)
#2010-11-10 23:10:09

sta=time_now.timestamp()
print(datetime.datetime.utcfromtimestamp(sta))
#2019-08-26 15:19:17.029112

datetime类常见属性

最大日期时间表示datetime.datetime.max 返回9999-12-31 23:59:59.999999

最小日期时间表示datetime.datetime.max 返回0001-01-01 00:00:00

datetime.timedelta类

timedelta表示时间的差值对象
语法:datetime.timedelta(weeks=0,days=0,hours=0,minutes=0,seconds=0,milliseconds=0,microsecons=0)
每个参数可正,可负也可0,默认是0

获取时间差

两个date日期作差
两个datetime日期时间作差
返回:时间差timedelta对象

与日期时间作和

timedelta对象+timedelta对象=>timedelta对象
datetime对象+timedelta对象=>datetime对象

import datetime
td1=datetime.timedelta(days=100)
td2=datetime.timedelta(days=-10)
td3=datetime.timedelta(hours=-10)
td4=datetime.timedelta(days=-1,hours=-1,minutes=-10)
print(td2)
#-10 days, 0:00:00

t1=datetime.datetime(2019,8,29,0,0,0)
print(t1+td3)
#2019-08-28 14:00:00

t2=datetime.datetime.now();
print(t2+td4)
#2019-08-25 22:20:22.716749

#周数
td5=datetime.timedelta(weeks=10)
print(t1+td3)
#2019-08-28 14:00:00

你可能感兴趣的:(Python)