1.time模块
1.1 time函数
time函数用于返回当前时间的时间戳,返回的是浮点数。
import time
now = time.time()
print("%f" %now)
![]()
1.2 localtime函数
localtime函数将时间戳格式化为本地时间,返回struct_time对象。可以自己设置时间戳,不设置默认当前时间戳。
import time
print(time.localtime())
print(time.localtime(0))

1.3 mktime函数
mktime函数与gmtime,localtime函数相反的操作,接收struct_time作为参数,返回用秒来表示时间的浮点数。
struct_time(年,月,日,时,分,秒,一周的第几日(0-6),一年的第几日(1-365),夏令时)
import time
t = (2020,9,27,15,0,0,6,271,0)
secs = time.mktime(t)
print("%f"% secs)
print("%f" % time.mktime(time.localtime(secs)))

1.4 gmtime函数
gmtime函数将一个时间戳转换为UTC时区的struct_time,可选的参数表示从1970-1-1以来的描述,默认值为time.time()
import time
print(time.gmtime())
print(time.gmtime(0))

1.5 asctime函数
asctime函数接受时间元组并返回一个可读的时间(Tue Jul 17 17:03:01 2018)
import time
t=(2018,7,17,17,3,1,1,1,0)
print(time.asctime(t))
print(time.asctime(time.localtime()))

1.6 ctime函数
ctime函数把一个时间戳转化为time.asctime()形式。
import time
print("%s" % time.ctime())
print("%s" % time.ctime(0))

1.7 sleep函数
sleep函数推迟调用线程的运行,可通过参数指定秒数
import time
print("%s" % time.ctime())
time.sleep(3)
print("%s" % time.ctime())
1.8 clock函数
clock函数以浮点数计算的描述返回当前CPU时间。
1.9 strftime
strftime函数用于接收时间元组,并返回可读字符串表示的当地时间。
import time
t=(2018,7,17,17,3,1,1,1,0)
t = time.mktime(t)
print(time.strftime("%b %d %Y %H:%M:%S",time.gmtime(t)))
![]()
1.10 strptime
strptime函数根据指定的格式把一个时间字符串解析成元组。
import time
struct_time = time.strptime("Jul 17 2018 09:03:01","%b %d %Y %H:%M:%S")
print(struct_time)

2.datetime模块
2.1 date对象
import datetime
#指定格式日期
print(datetime.date(2020,9,27))
#2020-09-27
#返回当天日期
print(datetime.date.today())
#2020-09-29
#返回今天周几(0-6)
print(datetime.date.today().weekday())
#1
#返回今天周几(1-7)
print(datetime.date.today().isoweekday())
#2
#以年-月-日输出
print(datetime.date(2020,9,27).isoformat())
#2020-09-27
#自定义格式输出
print(datetime.date(2020,9,27).strftime("%Y-%m-%d"))
#2020-09-27
2.2 time对象
time表示时间,与日期无关。
import datetime
#初始时间
time1 = datetime.time()
print(time1)
#00:00:00
#自定义设置时间
time2 = datetime.time(hour=8,second=7)
print(time2)
#08:00:07
#min,max表示时间的最值
print(datetime.time.min) #00:00:00
print(datetime.time.max) #23:59:59.999999
#isoformat返回ISO格式,即“HH:MM:SS”的字符串
print(time2.isoformat())
#08:00:07
#strftime格式化输出时间
time3 = datetime.time(hour=16,second=7,microsecond=123)
print(time3.strftime("%H:%M:%S")) #16:00:07
print(time3.strftime("%p %I:%M:%S:%f")) #PM 04:00:07:000123
2.3 datetime对象
datetime = date + time
import datetime
import time
#设置datetime,其中,年月日是必需,其他选填
dt1 = datetime.datetime(year=2018,month=7,day=1,hour=16,minute=10,second=5)
print(dt1)
#2018-07-01 16:10:05
#返回当前本地datetime
today = datetime.datetime.today()
print(today)
#2020-09-29 10:47:07.453575
#返回当前本地datetime
now = datetime.datetime.now()
print(now)
#2020-09-29 10:47:48.452932
#返回当前UTC的datetime
utcnow = datetime.datetime.utcnow()
print(utcnow)
#2020-09-29 02:48:32.211181
#fromtimestamp根据时间戳创建datetime对象
dt2 = datetime.datetime.fromtimestamp(time.time()-5000)
print(dt2)
#2020-09-29 09:27:22.921779
#date方法获取日期,time方法获取时间
print(now.date()) #2020-09-29
print(now.time()) #10:51:44.298140
#combine根据date和time,创建一个datetime对象
dt3 = datetime.date(2018,7,1)
dt4 = datetime.time(8,5,10)
dt5 = datetime.datetime.combine(dt3,dt4)
print(dt5)
#2018-07-01 08:05:10
#strftime方法格式化输出日期时间
print(dt5.strftime("%Y-%m-%d %H:%M:%S")) #2018-07-01 08:05:10
print(dt5.strftime("%y-%m-%d %a %I:%M:%S")) #18-07-01 Sun 08:05:10
2.4 timedelta对象
timedelta表示的是两个日期的差。
import datetime
import time
dt1 = datetime.datetime(2018,7,1,4,15,10)
dt2 = dt1 + datetime.timedelta(weeks=-2)
print(dt1)
print(dt2)
print(dt1-dt2)
print(dt2-dt1)

2.5 tzinfo对象
datetime和time对象使用tzinfo来提供可自定义的时间调整概念。
tzinfo类不能直接使用,通过datetime.timezone生成。datetime.timezone.utc实现了UTC时区的tzinfo实例。
import datetime
import time
utc_now1 = datetime.datetime.now(datetime.timezone.utc)
utc_now2 = datetime.datetime.utcnow()
print(utc_now1)
print(utc_now2)

本质上来说:datetime.timezone.utc = datetime.timezone(datetime.timedelta(0))
3.calendar模块
日历相关的方法。
import calendar
#calendar.isleap:判断是否闰年
print(calendar.isleap(2000)) #True
print(calendar.isleap(2018)) #False
#calendar.leapdays:返回两个年份之间闰年的总数
print(calendar.leapdays(1990,2018)) #7
#calendar.month返回多行字符串格式的年月日历,每日宽度间隔为w字符串,每行的长度为7*w+6。l是每星期的行数
print(calendar.month(2018,7))
print(calendar.month(2018,7,w=3))
print(calendar.month(2018,3,l=3))
"""
July 2018
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
July 2018
Mon Tue Wed Thu Fri Sat Sun
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
March 2018
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方法返回一个整数的单层嵌套列表,每个子列表装载一个星期
print(calendar.monthcalendar(2018,7))
#[[0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0]]
#calendar.monthrange返回两个整数组成的元组,第一个整数表示该月的第一天是星期几,第二个整数表示该月的天数
print(calendar.monthrange(2018,7))
#(6, 31)
#calendar.weekday返回给定日期的星期码,从0-6
print(calendar.weekday(2018,7,1))
#6
#calendar.calendar方法返回一个多行字符串格式的年历,3个月一行。间隔距离用c表示。每个宽度间隔为w参数。l参数是每星期的行数
print(calendar.calendar(2018))
"""
2018
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 7 1 2 3 4 1 2 3 4
8 9 10 11 12 13 14 5 6 7 8 9 10 11 5 6 7 8 9 10 11
15 16 17 18 19 20 21 12 13 14 15 16 17 18 12 13 14 15 16 17 18
22 23 24 25 26 27 28 19 20 21 22 23 24 25 19 20 21 22 23 24 25
29 30 31 26 27 28 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 1 2 3 4 5 6 1 2 3
2 3 4 5 6 7 8 7 8 9 10 11 12 13 4 5 6 7 8 9 10
9 10 11 12 13 14 15 14 15 16 17 18 19 20 11 12 13 14 15 16 17
16 17 18 19 20 21 22 21 22 23 24 25 26 27 18 19 20 21 22 23 24
23 24 25 26 27 28 29 28 29 30 31 25 26 27 28 29 30
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 1 2 3 4 5 1 2
2 3 4 5 6 7 8 6 7 8 9 10 11 12 3 4 5 6 7 8 9
9 10 11 12 13 14 15 13 14 15 16 17 18 19 10 11 12 13 14 15 16
16 17 18 19 20 21 22 20 21 22 23 24 25 26 17 18 19 20 21 22 23
23 24 25 26 27 28 29 27 28 29 30 31 24 25 26 27 28 29 30
30 31
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 7 1 2 3 4 1 2
8 9 10 11 12 13 14 5 6 7 8 9 10 11 3 4 5 6 7 8 9
15 16 17 18 19 20 21 12 13 14 15 16 17 18 10 11 12 13 14 15 16
22 23 24 25 26 27 28 19 20 21 22 23 24 25 17 18 19 20 21 22 23
29 30 31 26 27 28 29 30 24 25 26 27 28 29 30
31
"""
4.dateutil介绍
4.1 dateutil库是datetime模块的拓展,不是自带的,需要手动安装
conda install python-dateutil
4.2 使用dateutil
dateutil库有两个常见的模块,一个是parser模块,一个是rrule模块
4.2.1 parser模块
可以吧大多数已知格式的时间字符串全都转化为datetime类型
from dateutil.parser import parse
print(parse("Sat Oct 11 11:11:11 UTC 2003"))
print(parse("2018-08-20"))
print(parse("20180821"))
print(parse("12:00:00"))
#fuzzy开启模糊匹配,过滤掉无法识别的时间日期字符
print(parse("这是时间格式20180808",fuzzy=True))
"""
2003-10-11 11:11:11+00:00
2018-08-20 00:00:00
2018-08-21 00:00:00
2020-09-29 12:00:00
2018-08-08 00:00:00
"""
同时,parse还有时区信息,默认起始时间等
4.2.2 rrule模块
rrule模块用于计算并生成一些重复的时间规则,并且还支持对计算结果进行缓存
import pprint
from dateutil.rrule import rrule,MONTHLY
from datetime import datetime
start_date = datetime(2011,8,1)
l = list(rrule(freq=MONTHLY,count=4,dtstart=start_date))
pprint.pprint(l)
最后
以上就是乐观星月最近收集整理的关于9.日期和时间的全部内容,更多相关9内容请搜索靠谱客的其他文章。
发表评论 取消回复