为了账号安全,请及时绑定邮箱和手机立即绑定

Python基础模块:datetime模块

标签:
Python

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,星期日为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: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.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)



 

 

 

 

 

 

 

 

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消