Python3之日期和时间

一、概述

Python3 中提供了 time 和 calendar 模块用于格式化日期和时间

时间间隔是以秒为单位的浮点小数

每个时间戳是以从 1970 年 1 月 1 日午夜(历元)经过了多长时间来表示

二、时间元组在这里插入图片描述
三、获取当前时间戳

time.time()函数用于获取当前时间戳,返回单位为秒的浮点小数

四、获取当前时间

如将浮点型的时间戳方式转换为时间元组,需要将浮点数传递给time.localtime()函数

五、获取格式化的时间

获取格式化的时间:time.asctime()函数

六、格式化时间

time 模块的 strftime() 方法格式化日期,格式为:
time.strftime(format , time)

time 模块的 strptime() 函数根据指定的格式把一个时间字符串解析为时间元组,格式为:
time.strptime(string , format)
参数:
string – 时间字符串
format – 格式化字符串
返回值:返回时间元组 struct_time 对象

Python中时间日期格式化符号:
%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:当前时区的名称
%%:%号本身

七、获取某月日历

calendar.month(year , month)获取某月日历

import time , calendar

# 函数 time.time() 用于获取当前时间戳
print("当前时间戳:" , time.time())

# 获取当前时间:将浮点数传递给time.localtime()函数
print("获取当前时间:" , time.localtime(time.time()))

# 获取格式化的时间:time.asctime()
print("本地时间:" , time.asctime( time.localtime( time.time() ) ) )

# 格式化时间
# 格式化成2016-03-20 11:45:39形式
print("格式化时间:" , time.strftime("%Y-%m-%d %H-%M-%S" , time.localtime()))
# 格式化成Sat Mar 28 22:24:24 2016形式
print("格式化时间:" , time.strftime("%A %B %d %H:%M:%S %Y" , time.localtime()))
# time 模块的 strptime() 函数根据指定的格式把一个时间字符串解析为时间元组
time_str = "Wednesday August 19 19:37:01 2020"
print("时间字符串解析为时间元组:" , time.mktime(time.strptime(time_str , "%A %B %d %H:%M:%S %Y")))

# calendar.month(year , month)获取某月日历
print("打印当月日历:" , calendar.month(time.localtime().tm_year , time.localtime().tm_mon))

执行结果:

当前时间戳: 1598711550.6698282
获取当前时间: time.struct_time(tm_year=2020, tm_mon=8, tm_mday=29, tm_hour=22, tm_min=32, tm_sec=30, tm_wday=5, tm_yday=242, tm_isdst=0)
本地时间: Sat Aug 29 22:32:30 2020
格式化时间: 2020-08-29 22-32-30
格式化时间: Saturday August 29 22:32:30 2020
时间字符串解析为时间元组: 1597837021.0
time.strptime(str,fmt): time.struct_time(tm_year=2020, tm_mon=8, tm_mday=19, tm_hour=19, tm_min=37, tm_sec=1, tm_wday=2, tm_yday=232, tm_isdst=-1)
打印当月日历:     August 2020
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
八、Time模块
函数及描述示例
time.altzone:返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用print("time.altzone:" , time.altzone)返回值:time.altzone: -32400
time.asctime(tupletime):接受时间元组并返回一个可读的形式为"Wed Aug 19 20:06:47 2020"(2020年8月19日 周三20时06分47秒)的24个字符的字符串print("time.asctime(tupletime):" , time.asctime(time.localtime())) 返回值:time.asctime(tupletime): Wed Aug 19 20:08:30 2020
time.clock():用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用python3.8版本后使用如下函数替代:time.perf_counter() # 返回系统运行时间;time.process_time() # 返回进程运行时间
time.ctime([secs]):作用相当于asctime(localtime(secs)),未给参数相当于asctime()print("time.ctime():" , time.ctime()) 返回值:time.ctime(): Wed Aug 19 20:35:42 2020
time.gmtime([secs]):接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组。注:t.tm_isdst始终为0print("time.gmtime(secs):" , time.gmtime(1597840714.2569976)) 返回值:time.gmtime(secs): time.struct_time(tm_year=2020, tm_mon=8, tm_mday=19, tm_hour=12, tm_min=38, tm_sec=34, tm_wday=2, tm_yday=232, tm_isdst=0)
time.localtime([secs]:接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组,(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)print("time.localtime(secs):" , time.localtime(1597840714.2569976))返回值:time.localtime(secs): time.struct_time(tm_year=2020, tm_mon=8, tm_mday=19, tm_hour=20, tm_min=38, tm_sec=34, tm_wday=2, tm_yday=232, tm_isdst=0)
time.mktime(tupletime):接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)tumple_time = (2020 , 8 , 19 , 20 , 45 , 42 , 2 , 232 , 0)print("time.mktime(tupletime):" , time.mktime(tumple_time))print("time.mktime(time.localtime()):" , time.mktime(time.localtime()))返回值:time.mktime(tupletime): 1597841142.0time.mktime(time.localtime()): 1597841340.0
time.sleep(secs):推迟调用线程的运行,secs指秒数print ("Start : " , time.ctime())time.sleep( 5 )print ("End : " , time.ctime())返回值:Start : Wed Aug 19 20:51:54 2020End : Wed Aug 19 20:51:59 2020
time.strftime(fmt , tupletime):接收时间元组,返回可读字符串表示的当地时间,格式由fmt决定print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))返回值:2020-08-19 20:55:11
time.strptime(str,fmt=’%a %b %d %H:%M:%S %Y’):根据fmt的格式把一个时间字符串解析为时间元组time_str = "Wednesday August 19 19:37:01 2020"print("time.strptime(str,fmt):" , time.strptime(time_str , "%A %B %d %H:%M:%S %Y"))返回值:time.strptime(str,fmt): time.struct_time(tm_year=2020, tm_mon=8, tm_mday=19, tm_hour=19, tm_min=37, tm_sec=1, tm_wday=2, tm_yday=232, tm_isdst=-1)
time.time( ):返回当前时间的时间戳(1970纪元后经过的浮点秒数)print("time.time():" , time.time())返回值:time.time(): 1597842017.4162793
time.perf_counter():返回计时器的精准时间(系统的运行时间),包含整个系统的睡眠时间。由于返回值的基准点是未定义的,所以,只有连续调用的结果之间的差才是有效的
time.process_time():返回当前进程执行 CPU 的时间总和,不包含睡眠时间。由于返回值的基准点是未定义的,所以只有连续调用的结果之间的差才是有效的
time.timezone:属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)print("北京时区(未启动夏令时)距离格林威治的偏移秒数:" , time.timezone) 执行结果:北京时区(未启动夏令时)距离格林威治的偏移秒数: -28800
time.tzname:属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的print("time.tzname:" , time.tzname) 执行结果:time.tzname: ('中国标准时间', '中国夏令时')
九、日历(Calendar)模块

日历模块包含如下内置函数:

函数及描述实例
calendar.calendar( year , w = 2 , l = 1 , c = 6 ):返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c;每日宽度间隔为w字符;每行长度为21* W+18+2* C;l是每星期行数# 1、calendar.calendar(year,w=2,l=1,c=6)输出 year 年的年历 print(calendar.calendar(2020,w=2,l=1,c=6))
calendar.month(year,month,w=2,l=1):返回一个多行字符串格式的year年month月日历,两行标题,一周一行;每日宽度间隔为w字符;每行的长度为7* w+6;l是每星期的行数# 6、calendar.month(year,month,w=2,l=1):返回一个多行字符串格式的year年month月日历 print(calendar.month(time.localtime().tm_year , time.localtime().tm_mon , w = 2 , l = 1))
calendar.prcal(year, w=0, l=0, c=6, m=3):相当于 print (calendar.calendar(year, w=0, l=0, c=6, m=3))# 9、calendar.prcal(year, w=0, l=0, c=6, m=3) calendar.prcal(2020, w=0, l=0, c=6, m=3)
calendar.prmonth(theyear, themonth, w=0, l=0):相当于 print(calendar.month(theyear, themonth, w=0, l=0))# 10、calendar.prmonth(theyear, themonth, w=0, l=0) calendar.prmonth(2020 , 8 , w = 0 , l = 0)
calendar.firstweekday( ):返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一# 2、calendar.firstweekday( )返回当前每周起始日期的设置,0 代表周一 print("设置前每周起始日期为:" , calendar.firstweekday()) 执行结果:设置前每周起始日期为: 0
calendar.setfirstweekday(weekday):设置每周的起始日期码。0(星期一)到6(星期日)# 3、calendar.setfirstweekday()设置每周起始日期 calendar.setfirstweekday(6) # 设置每周起始日期为星期日 执行结果:设置后每周起始日期为: 6
calendar.isleap(year):判断某年是否为闰年。闰年返回 True,否则为 false# 4、calendar.isleap(year)判断 year 年是否为闰年 print("是否为闰年:" , calendar.isleap(2020)) 执行结果:是否为闰年: True
calendar.leapdays(y1 , y2):返回Y1,Y2之间的闰年总数# 5、calendar.leapdays(y1 , y2):返回Y1,Y2之间的闰年总数 print("Y1,Y2之间的闰年总数:" , calendar.leapdays(100 , 2020)) 执行结果:Y1,Y2之间的闰年总数: 465
calendar.monthcalendar(year,month):返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始# 7、calendar.monthcalendar(year,month):返回一个整数的单层嵌套列表 print(calendar.monthcalendar(2020 , 12)) 执行结果:[[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]]
calendar.monthrange(year,month):返回两个整数。第一个是该月的第一天是星期几,第二个是该月有多少天。星期几是从0(星期一)到 6(星期日)# 8、calendar.monthrange(year,month) print(calendar.monthrange(2020 , 8)) 执行结果:(5, 31)
calendar.timegm(tupletime):和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳(1970纪元后经过的浮点秒数)# 11、calendar.timegm(tupletime):将时间元组转换为时间戳 print("获取当前日期时间戳方法一:" , calendar.timegm(time.localtime())) print("获取当前日期时间戳方法二:" , time.time()) 执行结果:获取当前日期时间戳方法一: 1598745196 获取当前日期时间戳方法二: 1598716396.8426495
calendar.weekday(year,month,day):返回给定日期的日期码;0(星期一)到6(星期日);月份为 1(一月) 到 12(12月)# 12、calendar.weekday(year,month,day):返回给定日期的日期码 print("给定日期的日期码:" , calendar.weekday(2020 , 8 , 29)) # 返回周六的日期码 5
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值