Python学习之 ---标准库datetime + calendar + time的使用

俗话说:不以结婚为目的的恋爱都是耍流氓.
今天我们说另一个耍流氓:不考虑时间的编程就是耍流氓.
因此,今天主要学习时间库的相关知识
时间
.北京时间
首先学习datetime模块
datetime模块可以对日期,时间,时间戳进行处理

datetime 的类操作

datetime.datetime.today()# 返回本地时区当前时间的datetime对象
>>>datetime.datetime(2019, 4, 10, 16, 23, 39, 7115)
datetime.datetime.now(tz=None)  #返回当前时间的datetime对象,时间到微秒,如果tz为None,返回和today()一样
>>>datetime.datetime(2019, 4, 10, 16, 23, 39, 7115)  
datetime.datetime.utcnow() #没有时区的当前时间 # 格林威治时区的时间
datetime.datetime.fromtimestamp(timestamp, tz=None) #从一个时间戳返回一个datetime对象
datetime.datetime.fromtimestamp(1554885259)#插入时间戳,可以输出时间,网页时间是精确到毫秒,所以去掉后三位就可以显示出时间. 
#时间戳表示1970年元年1月1日到目前的时间总秒数.
>>>datetime.datetime(2019, 4, 10, 16, 34, 19)
#时间戳返回的时间后自动换算成目前当前时间,并不是格林威治时间

datetime对象操作

d1 =datetime.datetime.fromtimestamp(1554885259)
d1.timestamp()  #得到时间戳
>>>1554885259.0 #精确到微秒,浮点数
d2 = datetime.datetime(2019,4,10)#可以自行根据时间创建时间
>>>datetime.datetime(2019, 4, 10, 0, 0)
year、month、day、hour、minute、second、microsecond,#取datetime对象的年月日时分秒及微秒
d2.weekday() #返回星期的天,周一0,周日6,参考外国日期制
>>>2
isoweekday() #返回星期的天,周一1,周日7,想得到目前星期,用ISOweekday()
对象描述
.timestamp()得到时间戳
…weekday()返回星期的天,周一0,周日6,参考外国日期制
.isoweekday()返回星期的天,周一1,周日7
.date()返回日期date对象
.time()返回时间time对象
.replace()★修改并返回新的时间
.isocalendar() ★返回一个三元组(年,周数,周的天)
.timedelta时间差

replace主要用在时间的切换,如求当前时间的前一段时间:

d3=d2.replace(d2.year-10,5,2)#求当前时间的前10年,month和day改为5月2日的时间并返回给d3

时间格式化

类方法strptime(date_string, format) ,返回datetime对象.解析一个字符串到datetime对象.
对象方法strftime(format) ,返回字符串
(一个时间对象的方法返回格式化字符串)
字符串format函数格式化.
举例:

import datetime
dt= datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M") #注意给定字符串的格式,空格,日期形式,如年月,大写Y和小写y等.
print(dt.strftime("%Y-%m-%d %H:%M:%S"))#按照给定格式输出日期格式.
print("{0:%Y}/{0:%m}/{0:%d} {0:%H}::{0:%M}::{0:%S}".format(dt))#用字符串的format函数进行日期转换
print('{:%Y-%m-%d %H:%M:%S}'.format(dt))

timedelta对象

datetime2 = datetime1 + timedelta
datetime2 = datetime1 -timedelta
 
timedelta = datetime1 -datetime2
#构造方法
d2=d5+ datetime.timedelta(days=0, seconds=0, microseconds=0, milliseconds=0,minutes=0, hours=0, weeks=0)
 #在时间中,可以加年月日的时间差,比如days=1,years=1,加一年一月等.
year = datetime.timedelta(days=365)
d2.total_seconds() #返回时间差的总秒数  

calendar库

calendar.calendar(year,w,l,c)
返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c;每日宽度间隔占据w字符;每行长度为21* W+18+2* C;l是每星期占据行数.

示例:

import calendar
print(calendar.calendar(2019,w=2,l=1,c=9))  
>>>:
January                      February                      March
Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                      1  2  3                      1  2  3
 7  8  9 10 11 12 13          4  5  6  7  8  9 10          4  5  6  7  8  9 10
14 15 16 17 18 19 20         11 12 13 14 15 16 17         11 12 13 14 15 16 17
21 22 23 24 25 26 27         18 19 20 21 22 23 24         18 19 20 21 22 23 24
28 29 30 31                  25 26 27 28                  25 26 27 28 29 30 31

       April                         May                          June
Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7                1  2  3  4  5                         1  2
 8  9 10 11 12 13 14          6  7  8  9 10 11 12          3  4  5  6  7  8  9
15 16 17 18 19 20 21         13 14 15 16 17 18 19         10 11 12 13 14 15 16
22 23 24 25 26 27 28         20 21 22 23 24 25 26         17 18 19 20 21 22 23
29 30                        27 28 29 30 31               24 25 26 27 28 29 30

        July                        August                     September
Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7                   1  2  3  4                            1
 8  9 10 11 12 13 14          5  6  7  8  9 10 11          2  3  4  5  6  7  8
15 16 17 18 19 20 21         12 13 14 15 16 17 18          9 10 11 12 13 14 15
22 23 24 25 26 27 28         19 20 21 22 23 24 25         16 17 18 19 20 21 22
29 30 31                     26 27 28 29 30 31            23 24 25 26 27 28 29
                                                          30

      October                      November                     December
Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su         Mo Tu We Th Fr Sa Su
    1  2  3  4  5  6                      1  2  3                            1
 7  8  9 10 11 12 13          4  5  6  7  8  9 10          2  3  4  5  6  7  8
14 15 16 17 18 19 20         11 12 13 14 15 16 17          9 10 11 12 13 14 15
21 22 23 24 25 26 27         18 19 20 21 22 23 24         16 17 18 19 20 21 22
28 29 30 31                  25 26 27 28 29 30            23 24 25 26 27 28 29
                                                          30 31

calendar 对象操作

calendar.firstweekday( )
返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。经过calendar.setfirstweekday(weekday)可得到不一样的结果!
calendar.isleap(year)
是闰年返回True,否则为false
calendar.leapdays(y1,y2)
返回在Y1,Y2两年之间的闰年总数
calendar.month(year,month,w=2,l=1)
返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。

print(calendar.month(2019,8,w=2,l=1)) #返回2019年8月的日期
    August 2019
Mo Tu We Th Fr Sa Su
          1  2  3  4
 5  6  7  8  9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

calendar.monthcalendar(year,month)
返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。
calendar.monthrange(year,month)
返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12
calendar.prcal(year,w=2,l=1,c=6)
相当于 print calendar.calendar(year,w,l,c)
calendar.prmonth(year,month,w=2,l=1)
相当于 print calendar.month(year,w=2,l=1,c)
calendar.setfirstweekday(weekday)
设置每周的起始日期码。0(星期一)到6(星期日) ,返回值为None
calendar.timegm(tupletime)
和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳(1970纪元后经过的浮点秒数)
calendar.weekday(year,month,day)
返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)

Time库

time能操作的所有库都可以用datetime库操作,其他time库中的time.sleep仍有大用

time.sleep#用于进程沉默,在爬虫等操作中很有作用,可以模拟用户点击. 
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值