Python 中time,calendar,datatime模块总结
time:时间
Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能。时间间隔是以秒为单位的浮点小数。每个时间戳都以自从1970年1月1日午夜(历元)经过了多长时间来表示。Python 的 time 模块下有很多函数可以转换常见日期格式。
- 时间戳(timestamp):time.time()
时间戳单位最适于做日期运算。但是1970年之前的日期就无法以此表示了。太遥远的日期也不行,UNIX和Windows只支持到2038年。
import time; # 引入time模块
print(time.time())
'''
输出:1554878666.5730264
'''
-
延迟线程的运行:time.sleep(secs)
推迟调用线程的运行,secs指秒数。
import time
print ("延迟开始 : %s" % time.time())
time.sleep( 5 )
print ("延迟结束 : %s" % time.time())
'''
输出:
延迟开始 : 1554880195.2101836
延迟结束 : 1554880200.2106538
'''
-
(指定时间戳下的)当前时区时间:time.localtime([secs])
接收时间辍(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组t(t.tm_isdst可取0或1,取决于当地当时是不是夏令时)。
应用场景 => 通过时间戳,获得该时间戳能反映出的年月日等信息
import time
t1 = time.localtime(time.time())
print ("localtime(): ", t1)
'''
输出:
localtime(): time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=15, tm_min=14, tm_sec=33, tm_wday=2, tm_yday=100, tm_isdst=0)
'''
很多Python函数用一个元组装起来的9组数字处理时间:
序号 | 字段 | 属 性 | 对 应 值 |
---|---|---|---|
0 | 4位数年 | tm_year | 2008 |
1 | 月 | tm_mon | 1到12 |
2 | 日 | tm_mday | 1到31 |
3 | 小时 | tm_hour | 0到23 |
4 | 分钟 | tm_min | 0到59 |
5 | 秒 | tm_sec | 0到61(60或61是闰秒) |
6 | 一周的第几天 | tm_wday | 0到6 (0是周一) |
7 | 一年的第几天 | tm_yday | 1到366 (儒略历) |
8 | 夏时令 | tm_isdst | -1, 0, 1, -1是决定是否为夏令时的旗帜 |
-
(指定时间戳下的)格林威治时间:time.gmtime([secs])
接收时间辍(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0
import time
print ("gmtime :", time.gmtime(time.time()))
'''
输出:
gmtime : time.struct_time(tm_year=2019, tm_mon=4, tm_mday=10, tm_hour=7, tm_min=19, tm_sec=46, tm_wday=2, tm_yday=100, tm_isdst=0)
'''
-
(指定时间元组下的)格式化时间:time.strftime(fmt[,tupletime])
接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。
import time
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
'''
输出:
2019-04-10 15:21:41
'''
import time
t = (2020, 4, 10, 10, 19, 22, 2, 200, 0)
res = time.strftime('%Y-%m-%d %j days', t)
# 没有确保数据的安全性,只是将元组信息转化为时间格式的字符串
print(res)
'''
输出:
2020-04-10 200 days
'''
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:日历
-
判断闰年:calendar.isleap(year)
是闰年返回True,否则为false。
import calendar
print(calendar.isleap(2019))
'''
输出:
False
'''
-
查看某年某月日历:calendar.month(year, month)
Calendar模块有很广泛的方法用来处理年历和月历,例如打印某月的月历:
import calendar
print(calendar.month(2019, 4))
'''
输出:
April 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
'''
-
查看某年某月起始星期与当月天数:calendar.monthrange(year, month)
返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。
import calendar
print(calendar.monthrange(2019, 4))
'''
输出:
(0, 30)
'''
-
查看某年某月某日是星期几:calendar.weekday(year, month, day)
返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。
import calendar
print(calendar.weekday(2018, 8, 8))
'''
输出
2
'''
datatime:可以运算的时间
-
当前时间:datetime.datetime.now()
输出当前的时间
import datetime
tm = datetime.datetime.now()
print(tm, type(tm))
'''
输出:
2018-04-10 15:49:27.706496 <class 'datetime.datetime'>
'''
-
昨天:datetime.datetime.now() + datetime.timedelta(days= -1)
可以利用datetime.timedelta对时间进行计算
import datetime
tm = datetime.datetime.now()
day = datetime.timedelta(days=1)
print(day, type(day))
# tm与day都是对象,可以直接做运算
print(tm - day)
'''
输出:
1 day, 0:00:00 <class 'datetime.timedelta'>
2018-04-09 15:52:55.814921
'''
- 修改时间:datatime_obj.replace([…])
import datetime
tm = datetime.datetime.now()
print(tm)
print(tm.replace(year=2200))
'''
输出:
2018-04-10 15:56:26.245580
2200-04-10 15:56:26.245580
'''
- 格式化时间戳:datetime.date.fromtimestamp(timestamp)
import datetime
print(datetime.date.fromtimestamp(5656565653))
'''
输出:
2149-04-01
'''