datetime介绍:

datetime是Python处理日期和时间的标准库。

它包含了五个类:datetime,date,time,timedelta, tzinfo

datetime数据对象:使用strptime把字符串日期转变为此对象,可以使用datetime里的一些方法和属性,比如date(),time(),year,month,day,strftime(),replace()等。

 

导入语句:from datetime import datetime,date,time,timedelta, timezone,把所有类全都都导入。

如果只导入包名:import datetime,使用的时候必须datetime.datetime,datetime.time,datetime.date

其它时间相关的包:pytz,tzlocal,calendar

 

                                  datetime类                                  
方法名
作用
示例
结果
strptime(字符串,日期格式) 把字符串日期转换成datetime对象的实例
转换后的格式可以使用datetime类方法
datetime.strptime('2018-01-18 06:25:38.22222',"%Y-%m-%d %H:%M:%S.22222") 2018-01-18 06:25:38
strftime(自定义格式) 自已定显示格式,datetime实例可以使用

dd=datetime.strptime('2018-5-6','%Y-%m-%d')

print(dd.year)

2018
combine(date,time) 根据date和time,创建一个datetime对象 datetime.combine(date(2018,12,1),time(12,10,3)) 2018-12-01 12:10:03
fromtimestamp(时间戳[,时区])

把时间戳转换成datetime对象

缺省时区显示计算机当前时区

datetime.fromtimestamp(441188) 1970-01-06 10:33:08
utcfromtimestamp(时间戳)

时间戳参数必须

把时间戳转换成UTC标准时区的datetime对象

datetime.utcfromtimestamp(441188) 1970-01-06 02:33:08
timestamp(datetime对象)
把datetime对象转换成时间戳

dd=datetime.strptime('2018-5-6','%Y-%m-%d')

datetime.timestamp(dd)

1525564800.0
timetuple(datetime对象) 返回struc_time格式的元组 datetime.timetuple(datetime.now()) time.struct_time(tm_year=2018, tm_mon=1, tm_mday=24, tm_hour=7, tm_min=44, tm_sec=17, tm_wday=2, tm_yday=24, tm_isdst=-1)
now(时区)

获取当前系统datetime格式时间

缺省不带时区,返回的是本机时区

datetime.now() 2018-01-19 11:06:03.903022
utcnow()

获取当前系统datetime格式时间

缺省不带时区,返回的是标准时区

datetime.utcnow() 2018-01-19 03:06:03.903022
astimezone(timezone格式)

带utc格式的时区转换时区

它会改变原datetime时间的时区

datetime_utc = datetime.utcnow().replace(tzinfo=timezone.utc)

print(datetime_utc.astimezone(timezone(timedelta(hours=8))))

2018-02-01 15:49:49.578894+08:00
today()

获取当前系统datetime格式时间

和不带时区的now()结果一样

datetime.today() 2018-01-19 03:06:03.903022
replace(实参) 改变datetime时间对象的属性值 datetime.now().replace(year=2002,month = 11) 2002-11-19 04:04:10.917801
datetime格式对象的属性

date()--日期

year--年

month--月

day--天

time()--时间

hour--小时

minute--分钟

second--秒

microsecond--微秒

resolution--当前时间格式的最小单位

tzinfo--时区

print(datetime.now().date())

print(datetime.now().year)
print(datetime.now().month)
print(datetime.now().day)
print(datetime.now().time())
print(datetime.now().hour)
print(datetime.now().second)
print(datetime.now().minute)
print(datetime.now().microsecond)
print(datetime.now().resolution)
print(datetime.utcnow().tzinfo)

2018-01-19

2018
1
19
04:13:32.181138
4
32
13
181163
0:00:00.000001
None

-

计算两个时间的差值,结果分date和time

两个时间必须是datetime对象

最小可以支持到微秒

n = datetime(10,10,10,10,10)
t = datetime(8,8,8,8,8)
print(n-t)
793 days, 2:02:00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 





                          date类                          
方法名
作用
示例
结果
date(年,月,日)   

年月日不可缺省

把年月日参数转换成date格式

转换完可以使用date格对象的属性

date(2002,2,2)
2002-02-02
date格对象的属性

year--年

month--月

day--天

date(2002,2,2).year

date(2002,2,2).month

date(2002,2,2).day

 

2002
2
2
timetupel(date对象) 返回struc_time格式元组

s = date(1,2,1)

timetuple(s)

time.struct_time(tm_year=1, tm_mon=2, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=32, tm_isdst=-1)
strftime(date对象,格式符)

返回指定格式化符号的字符串

格式化符号%Y,%m,%d,%y,%w等和天数相关格式

具体参照time模块的格式说明

s = date(1,2,1)

date.strftime(s,"%y,%W,%Y,%m,%d")

01,05,1,02,01
replace(实参) 改变date时间对象的属性值 s.replace(day = 9) 0001-02-09
toordinal() 计算现在时间距离1年1月1日多少天 s.toodinal() 32
weekday() 返回星期,星期一为0,星期日为6 s.weekday() 3
iosweekday() 返回星期,星期一为1,星期日为7 s.iosweekday() (1, 5, 4)
iosformat() 返回格式为,“年-月-日”的日期 s.iosformat() 0001-02-01
ctime() 返回字符串型日期 s.ctime() Thu Feb  1 00:00:00 0001

 

 

 

 

                          time类                          
方法名
作用
示例
结果
time(小时,分,秒,毫秒)

返回一个time格式的时间

缺省参数,显示00:00:00

time(12,35,21,965) 12:35:21.000965
time属性。

返回时间的小时、分钟、秒、毫秒

hour--小时

minute--分钟

second--秒

microsecond--微秒

tzinfo--时区

t = time(12,35,21,965)

print(t.hour)

print(t.minute)

print(t.second)

print(t.microsecond)

print(t.tzinfo)

 

12
35
21
965

None

replace(实参)

可以替换指定部分time格式的时间

hour,minute,second,microsecond,tzinfo

print(t.replace(minute=3)) 12:03:21.000965
isoformat() 返回一个‘HH:MM:SS.%f'格式的时间字符串 print(t.isoformat()) 12:35:21.000965
strftime(time时间格式,字符串格式符) 将时间格式转变成指定字符串格式

print(t.strftime("Hours:%H,%M,%S"))

print(time.strftime(t,"Hours:%H,%M,%S"))

Hours:12,35,21

                                    timedelta类                                 

timedalte 对象表示两个时间的差值,可以指定天、时间、周。

*实际上就是datetime的-号运算结果。使用timedelta格式化以后重新与datetime对象进行加、减运算,计算出指定日期。
*构造函数:timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)                                                      

属性 说明 示例 结果
min 显示timedelta支持的最小时间差 timedelta.min

-999999999 days, 0:00:00

max 显示timedelta支持的最大时间差 timedelta.max 999999999 days, 23:59:59.999999
resolution 显示timedelta支持最小时间单位 timedelta.resolution 0:00:00.000001
timedelta参数

days--天

hours--小时

seconds--秒

microseconds--微秒

milliseconds--毫秒

weeks--周

print(timedelta(days = 1))
print(timedelta(hours = 1))
print(timedelta(seconds = 1))
print(timedelta(microseconds = 1))
print(timedelta(milliseconds = 1))
print(timedelta(weeks = 1))
1 day, 0:00:00
1:00:00
0:00:01
0:00:00.000001
0:00:00.001000
7 days, 0:00:00
timedelta对象属性

days--天

seconds--秒

microseconds--微秒

delta = timedelta.max

print(delta.days)

print(delta.seconds)

print(delta.microseconds)


999999999
86399
999999

 

                                    timezone类                                 
utc 获取标准时区0
astimezone(timedelta格式) 改变时区

标准变换时区语句:

utc_date= datetime.utcnow().replace(tzinfo=timezone.utc)
print(utc_date)

bj_utc = utc_date.astimezone(timezone(timedelta(hours = 8)))
print(bj_utc)

结果:

2018-02-01 08:23:19.612199+00:00
2018-02-01 16:23:19.612199+08:00


 

例子:

一、当前时间加一个月

now_time = datetime.now()

next_time = now_time.replace(month = now_time.month+1)