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
'''
posted @ 2019-04-10 15:31  linwow  阅读(332)  评论(0编辑  收藏  举报