博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[PY3]——时间处理——datetime | calendar
阅读量:5359 次
发布时间:2019-06-15

本文共 4523 字,大约阅读时间需要 15 分钟。

Python3的日期/时间处理模块

datetime的格式化符号

     格式化符号       

表示

%y

两位数的年份表示(00-99)

%Y

四位数的年份表示(000-9999)

%m

月份(01-12)

%d

日(0-31)

%H

24小时制小时数(0-23)

%I

12小时制小时数(01-12)

%M

分钟数(00=59)

%S

秒(00-59)

%a

本地简化星期名称

%A

本地完整星期名称

%b

本地简化的月份名称

%B

本地完整的月份名称

%c

本地相应的日期表示和时间表示

%j

年内的一天(001-366)

%p

本地A.M.或P.M.的等价符

%U

一年中的星期数(00-53)星期天为星期的开始

%w

星期(0-6),星期天为星期的开始

%W

一年中的星期数(00-53)星期一为星期的开始

%x

本地相应的日期表示

%X

本地相应的时间表示

%Z

当前时区的名称

获取日期和时间

1. datetime

# 获取当前日期和时间print(datetime.now())2017-08-17 14:38:27.417507
print(datetime.now().month) 8 print(datetime.now().minute) 41
# 构造指定日期和时间 dt=datetime(2017,6,25,9,0,1) print(dt) 2017-06-25 09:00:01 # datetime本身有日期时间格式的容错 dt=datetime(2017,6,25,25,00) ValueError: hour must be in 0..23

2. calendar

# 获取某个月的日历 import calendarprint(calendar.month(2017,8))    August 2017Mo Tu We Th Fr Sa Su    1  2  3  4  5  6 7  8  9 10 11 12 1314 15 16 17 18 19 2021 22 23 24 25 26 2728 29 30 31

 

datetime <—> timestamp

# datetime——>timestamp: datetime.timestamp()dt=datetime(2017,6,25,9,0,1)print(dt.timestamp())1498395601.0# timestamp()——>datetime: datetime.fromtimestamp(t)t=1498395601.0print(datetime.fromtimestamp(t))      #本地时间2017-06-25 09:00:01print(datetime.utcfromtimestamp(t))   #UTC时间2017-06-25 13:00:01

 

str<——>datetime:strptime(str,格式化字符串)

# str——>datetime:strptime(str,格式化字符串) text="2017-06-25 12:01:02"cdate=datetime.strptime(text,'%Y-%m-%d %H:%M:%S')print(cdate,type(cdate))2017-06-25 12:01:02 
0:00:00.001838 //执行时间# 实际上由于strptime()的性能较差,我们可以自定义一个类似下面这样的函数来实现str—>datetime def parse_dt(*args): if len(args)==1: y,mo,r=args[0].split('-') return datetime(int(y),int(mo),int(r)) else: y,mo,r=args[0].split('-') h,mi,s=args[1].split(':') return datetime(int(y),int(mo),int(r),int(h),int(mi),int(s))dt=parse_dt('2017-6-25','12:01:02')print(dt,type(dt))2017-06-25 12:01:02
0:00:00.000019 //执行时间
# datetime——>str:strftime(datetime,格式化字符串) dt=datetime(2017,6,25,9,0,1) cdate=datetime.strftime(dt,'%A %B %d,%Y') //根据python格式化格式来输出想要的结果即可 print(cdate) Sunday June 25,2017

 

时间计算/判断

1. 计算时间间隔

d1=parse_dt('2017-8-21','14:00:00')d2=parse_dt('2017-8-21','18:30:00')#计算时间差print(type(d2-d1))#
print((d2-d1))#4:30:00print((d2-d1).days)#0print((d2-d1).seconds)#16200
# datetime加减:时间往后或往前计算dt=datetime.now()print(dt)#2017-08-21 09:43:47.183234print(dt+timedelta(hours=1))#2017-08-21 10:43:47.183234print(dt-timedelta(hours=1))#2017-08-21 08:43:47.183234print(dt-timedelta(days=1,hours=1))#2017-08-20 08:43:47.183234

2. 判断某天是周几

#判断某天是周几def gz_weekday(year,month,day):    x=calendar.weekday(year,month,day)    if x==0:        print("星期一")    if x==1:        print("星期二")    if x==2:        print("星期三")    if x==3:        print("星期四")    if x==4:        print("星期五")    if x==5:        print("星期六")    if x==6:        print("星期日")gz_weekday(2017,8,17)星期四

3. 判断闰年

#判断是否为闰年print(calendar.isleap(2020))#Trueprint(calendar.isleap(2017))#Falseprint(calendar.leapdays(2000,2020))#5

4. 计算上一个周五/下一个周五

#计算上一个星期五/下一个星期五from dateutil.relativedelta import relativedeltafrom dateutil.rrule import *dt=datetime.now()print(dt)#2017-08-21 11:21:40.470703print(dt+relativedelta(weekday=FR))  #其他Mo、等都同理#2017-08-25 11:21:40.470703print(dt+relativedelta(weekday=FR(-1)))#2017-08-18 11:21:40.470703

 5. 计算某个月有几天

#计算某个月有几天import calendar# monthrange(year, month)#     Return weekday (0-6 ~ Mon-Sun) and number of days (28-31) for year, month.print(calendar.monthrange(2018,2))#(3, 28)print(calendar.monthrange(2017,10))#(6, 31)

 

补充:calender模块常见函数

序号

函数及描述

1

calendar.calendar(year,w=2,l=1,c=6)

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

2

calendar.firstweekday( )

返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。

3

calendar.isleap(year)

是闰年返回True,否则为false。

4

calendar.leapdays(y1,y2)

返回在Y1,Y2两年之间的闰年总数。

5

calendar.month(year,month,w=2,l=1)

返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。

6

calendar.monthcalendar(year,month)

返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

7

calendar.monthrange(year,month)

返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。

8

calendar.prcal(year,w=2,l=1,c=6)

相当于 print calendar.calendar(year,w,l,c).

9

calendar.prmonth(year,month,w=2,l=1)

相当于 print calendar.calendar(year,w,l,c)。

10

calendar.setfirstweekday(weekday)

设置每周的起始日期码。0(星期一)到6(星期日)。

11

calendar.timegm(tupletime)

和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。

12

calendar.weekday(year,month,day)

返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。

转载于:https://www.cnblogs.com/snsdzjlz320/p/7382494.html

你可能感兴趣的文章
软件测试第八次作业
查看>>
Anytime项目开发记录4
查看>>
iOS搜索附近的位置(类似微博朋友圈位置)
查看>>
spring boot的初始化加载
查看>>
Linux内核模块简介
查看>>
血眼龙王萧沙传-王遗风篇(2)
查看>>
android 左右滑动 +索引图标
查看>>
几种排序方法
查看>>
查看数据库各表的信息
查看>>
JQuery Each循环遍历每个元素
查看>>
LiveBos---批量查找组件
查看>>
生活服务类O2O或许将面临不少挑战!
查看>>
第一阶段测试题
查看>>
项脊轩志
查看>>
字符串匹配算法 之 基于DFA(确定性有限自动机)
查看>>
【Win10 应用开发】使用“实时可视化树”工具查看应用界面元素
查看>>
ClickOnce部署(4):下载多个安装包
查看>>
2013年计划和目标
查看>>
孤儿进程与僵尸进程[总结](转载)
查看>>
文件夹操作:复制和删除整个文件夹
查看>>