python日历库_Python(19):Python标准库: 日期、时间和日历模块

一、time时间模块

import time

1 、时间戳:time.time()

时间戳(timestamp):时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量。

时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。

time_stamp=time.time()print(time_stamp, type(time_stamp)) #1574923359.1739607

2、 格式化时间:time.strftime()

格式化的时间字符串(format string):格式化时间表示的是普通的字符串格式的时间。

format_time = time.strftime("%Y-%m-%d %X")print(format_time, type(format_time)) #2019-03-07 16:22:11 # 格式化成2016-03-20 11:45:39形式

print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))

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 当前时区的名称

%% %号本身

3 、结构化时间:time.localtime()

结构化的时间(struct time):struct_time元组共有9个元素共九个元素,分别为(年,月,日,时,分,秒,一年中第几周(0是周一),一年中第几天,夏令时)

#UTC时区的struct_time:

print(time.gmtime() ) #time.struct_time(tm_year=2019, tm_mon=11, tm_mday=28, tm_hour=6, tm_min=45, tm_sec=34, tm_wday=3, tm_yday=332, tm_isdst=0)#本地时区的struct_time:

print( time.localtime() ) #time.struct_time(tm_year=2019, tm_mon=11, tm_mday=28, tm_hour=14, tm_min=45, tm_sec=34, tm_wday=3, tm_yday=332, tm_isdst=0)# 获取当前时间print( time.localtime(time.time())#结构化时间的基准时间

print(time.localtime(0) ) #time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0)

#结构化时间的基准时间上增加一年时间

print(time.localtime(3600 * 24 * 365) ) #time.struct_time(tm_year=1971, tm_mon=1, tm_mday=1, tm_hour=8, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=1, tm_isdst=0)

4、 不同格式时间的转换

24244-20191128201549980-1665464778.png

如上图所示,我们总能通过某些方法在结构化时间-格式化时间-时间戳三者之间进行转换,下面我们将用代码展示如何通过这些方法转换时间格式。

#结构化时间

now_time =time.localtime()print(now_time) #time.struct_time(tm_year=2019, tm_mon=11, tm_mday=28, tm_hour=14, tm_min=51, tm_sec=55, tm_wday=3, tm_yday=332, tm_isdst=0)

#把结构化时间转换为时间戳格式

print(time.mktime(now_time)) #1574923915.0

#把结构化时间转换为格式化时间#%Y年-%m月-%d天 %X时分秒=%H时:%M分:%S秒

print(time.strftime("%Y-%m-%d %X", now_time) ) #2019-11-28 14:51:55

#把格式化时间化为结构化时间,它和strftime()是逆操作

print(time.strptime('2013-05-20 13:14:52', '%Y-%m-%d %X') ) #time.struct_time(tm_year=2013, tm_mon=5, tm_mday=20, tm_hour=13, tm_min=14, tm_sec=52, tm_wday=0, tm_yday=140, tm_isdst=-1)

5、 其他用法

#把结构化时间表示为这种形式(24个字符的字符串):'Sun Jun 20 23:21:05 1993'。

print(time.asctime() ) #Thu Nov 28 14:51:55 2019#如果没有参数,默认会将time.localtime()作为参数传入。

print(time.asctime(time.localtime()) ) #Thu Nov 28 14:51:55 2019

#把一个时间戳转化为这种形式(24个字符的字符串):'Sun Jun 20 23:21:05 1993'。print(time.ctime() ) #Thu Nov 28 14:51:55 2019#如果参数未给或者为None的时候,默认会将time.time()为参数。它的作用相当于time.asctime(time.localtime(secs))。

print(time.ctime(time.time())) #Thu Nov 28 14:51:55 2019#推迟指定的时间运行,单位为秒

start =time.time()

time.sleep(3)

end=time.time()print(end-start) #3.0005428791046143time.perf_counter() # 返回系统运行时间

time.process_time() # 返回进程运行时间

二、datetime时间加减的模块

datetime模块可以看成是时间加减的模块

import datetime1、用法:

importdatetimeimporttime#返回当前时间

print(datetime.datetime.now() ) #2019-11-28 15:02:23.138960

print(datetime.date.fromtimestamp(time.time()) ) #2019-11-28

#当前时间+3天

print(datetime.datetime.now() + datetime.timedelta(3) ) #2019-12-01 15:02:23.138960#当前时间-3天

print(datetime.datetime.now() + datetime.timedelta(-3)) #2019-11-25 15:02:23.138960#当前时间-3小时

print(datetime.datetime.now() + datetime.timedelta(hours=3) ) #2019-11-28 18:02:23.138960#当前时间+30分钟

print(datetime.datetime.now() + datetime.timedelta(minutes=30) ) #2019-11-28 15:32:23.138960

#时间替换

c_time =datetime.datetime.now()print(c_time.replace(minute=20, hour=5, second=13)) #2019-11-28 05:20:13.138960

2、常用时间处理方法今天: today = datetime.date.today()

昨天: yesterday = today - datetime.timedelta(days=1)

上个月: last_month = today.month - 1 if today.month - 1 else 12

当前时间戳: time_stamp = time.time()

时间戳转datetime: datetime.datetime.fromtimestamp(time_stamp)

datetime转时间戳: int(time.mktime(today.timetuple()))

datetime转字符串: today_str = today.strftime("%Y-%m-%d")

字符串转datetime: today = datetime.datetime.strptime(today_str, "%Y-%m-%d")

补时差: today + datetime.timedelta(hours=8)

三、Calendar日历模块

Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:

importcalendar

cal= calendar.month(2016, 1)print ("以下输出2016年1月份的日历:")print (cal)

以上实例输出结果:以下输出2016年1月份的日历:

January 2016

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.setfirstweekday()函数。

1、农历:

安装方法:

pip install sxtwl

#引入日历库模块

importsxtwl#日历中文索引

ymc = ["十一", "腊", "正", "二", "三", "四", "五", "六", "七", "八", "九", "十"]

rmc= ["初一", "初二", "初三", "初四", "初五", "初六", "初七", "初八", "初九", "初十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九","二十", "廿一", "廿二", "廿三", "廿四", "廿五", "廿六", "廿七", "廿八", "廿九", "三十", "卅一"]#实例化日历库

lunar =sxtwl.Lunar()#阴历转阳历

day = lunar.getDayByLunar(2030, 3, 27, False) #公元前的年可以用负数表示。比如公交前20年就用-20

print(u"公历:", day.y, u"年", day.m, u"月", day.d, u"日")ifday.Lleap:print(u"阴历:润", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")else:print(u"阴历:", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")#同理,阳历转阴历

day = lunar.getDayBySolar(2018, 10, 20)print(u"公历:", day.y, u"年", day.m, u"月", day.d, u"日")ifday.Lleap:print(u"阴历:润", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")else:print(u"阴历:", ymc[day.Lmc], u"月", rmc[day.Ldi], u"日")

更加详细的使用方法请参考:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值