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).day2002
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,星期日为6s.weekday()3
iosweekday()返回星期,星期一为1,星期日为7s.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:00time(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,tzinfoprint(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.max999999999 days, 23:59:59.999999
resolution显示timedelta支持最小时间单位timedelta.resolution0: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)