Python 3 - 日期 & 时间

  • 简述

    Python 程序可以通过多种方式处理日期和时间。日期格式之间的转换是计算机的常见苦差事。Python 的时间和日历模块有助于跟踪日期和时间。
  • 什么是 Tick?

    时间间隔是以秒为单位的浮点数。特定时刻以自 1970 年 1 月 1 日凌晨 12:00(纪元)起的秒数表示。
    有一种流行timePython 中可用的模块,它提供用于处理时间和在表示之间进行转换的函数。功能time.time()返回自 1970 年 1 月 1 日(纪元)12:00am 以来的当前系统时间。

    例子

    
    #!/usr/bin/python3
    import time;      # This is required to include time module.
    ticks = time.time()
    print ("Number of ticks since 12:00am, January 1, 1970:", ticks)
    
    这将产生如下结果 -
    
    Number of ticks since 12:00am, January 1, 1970: 1455508609.34375
    
    日期算术很容易用刻度来做。但是,不能以这种形式表示纪元之前的日期。遥远未来的日期也不能以这种方式表示 - 对于 UNIX 和 Windows,截止点是 2038 年的某个时候。
  • 什么是时间元组?

    许多 Python 的时间函数将时间处理为 9 个数字的元组,如下所示 -
    索引 字段
    0 4 位数年份 2016
    1 1至12
    2 1 至 31
    3 小时 0 到 23
    4 分钟 0 到 59
    5 0 到 61(60 或 61 是闰秒)
    6 星期几 0 到 6(0 是星期一)
    7 一年中的某一天 1 到 366(儒略日)
    8 夏令时 -1、0、1、-1 表示库确定 DST
    例如 -
    
    import time
    print (time.localtime());
    
    这将产生如下结果 -
    
    time.struct-time(tm-year = 2016, tm-mon = 2, tm-mday = 15, tm-hour = 9, 
       tm-min = 29, tm-sec = 2, tm-wday = 0, tm-yday = 46, tm-isdst = 0)
    
    上面的元组相当于struct-time结构体。该结构具有以下属性 -
    序号 属性 价值观
    0 tm-year 2016
    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 表示库确定 DST
  • 获取当前时间

    要将时间从纪元浮点值以来的秒数转换为时间元组,请将浮点值传递给函数(例如本地时间),该函数返回包含所有有效九项的时间元组。
    
    #!/usr/bin/python3
    import time
    localtime = time.localtime(time.time())
    print ("Local current time :", localtime)
    
    这将产生以下结果,可以以任何其他可呈现的形式格式化 -
    
    Local current time : time.struct-time(tm-year = 2016, tm-mon = 2, tm-mday = 15, 
       tm-hour = 9, tm-min = 29, tm-sec = 2, tm-wday = 0, tm-yday = 46, tm-isdst = 0)
    
  • 获取格式化时间

    您可以根据需要随时格式化,但是以可读格式获取时间的简单方法是asctime()
    
    #!/usr/bin/python3
    import time
    localtime = time.asctime( time.localtime(time.time()) )
    print ("Local current time :", localtime)
    
    这将产生以下结果 -
    
    Local current time : Mon Feb 15 09:34:03 2016
    
  • 获取一个月的日历

    日历模块提供了多种方法来使用年历和月历。在这里,我们打印给定月份(2008 年 1 月)的日历 -
    
    #!/usr/bin/python3
    import calendar
    cal = calendar.month(2016, 2)
    print ("Here is the calendar:")
    print (cal)
    
    这将产生以下结果 -
    
    Here is the calendar:
       February 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
    
  • 时间模块

    有一种流行timePython 中可用的模块,它提供用于处理时间和在表示之间进行转换的函数。这是所有可用方法的列表。
    序号 功能说明
    1 time.altzone
    如果定义了本地 DST 时区的偏移量,以 UTC 以西的秒数表示。如果本地 DST 时区在 UTC 以东(如在西欧,包括英国),则此值为负数。如果日光不为零,请使用此选项。
    2 time.asctime([tupletime])
    接受一个时间元组并返回一个可读的 24 字符字符串,例如“Tue Dec 11 18:07:14 2008”。
    3 time.clock( )
    以浮点秒数形式返回当前 CPU 时间。为了衡量不同方法的计算成本,time.clock 的值比 time.time() 的值更有用。
    4 time.ctime([secs])
    就像 asctime(localtime(secs)) 一样,没有参数就像 asctime( )
    5 time.gmtime([secs])
    接受自纪元以来以秒为单位表示的瞬间,并返回具有 UTC 时间的时间元组 t。注意 - t.tm-isdst 始终为 0
    6 time.localtime([secs])
    接受自纪元以来以秒为单位表示的瞬间,并返回具有本地时间的时间元组 t(t.tm-isdst 为 0 或 1,具体取决于 DST 是否适用于当地规则的瞬间秒)。
    7 time.mktime(tupletime)
    接受以本地时间表示为时间元组的瞬间,并返回一个浮点值,其中瞬间以自纪元以​​来的秒数表示。
    8 time.sleep(secs)
    暂停调用线程 secs 秒。
    9 time.strftime(fmt[,tupletime])
    接受以本地时间表示为时间元组的瞬间,并返回表示由字符串 fmt 指定的瞬间的字符串。
    10 time.strptime(str,fmt = '%a %b %d %H:%M:%S %Y')
    根据格式字符串 fmt 解析 str 并以时间元组格式返回瞬间。
    11 time.time( )
    返回当前时刻,一个自纪元以来的浮点秒数。
    12 time.tzset()
    重置库例程使用的时间转换规则。环境变量 TZ 指定了这是如何完成的。
    time 模块有两个重要的属性。他们是 -
    序号 属性和描述
    1
    time.timezone
    属性 time.timezone 是本地时区(没有夏令时)与 UTC 的偏移量(美洲 >0;欧洲、亚洲、非洲大部分地区 <=0)。
    2
    time.tzname
    属性time.tzname是一对locale-dependent strings,分别是不带DST和带DST的本地时区名称。
  • 日历模块

    calendar 模块提供与日历相关的功能,包括打印给定月份或年份的文本日历的功能。
    默认情况下,日历将星期一作为一周的第一天,将星期日作为最后一天。要更改此设置,请调用calendar.setfirstweekday()功能。
    这是可用的功能列表calendar模块 -
    序号 功能说明
    1
    calendar.calendar(year,w = 2,l = 1,c = 6)
    返回一个多行字符串,其中包含年的日历,格式为由 c 空格分隔的三列。w 是每个日期的字符宽度;每行的长度为 21*w+18+2*c。l 是每周的行数。
    2
    calendar.firstweekday( )
    返回每周开始的工作日的当前设置。默认情况下,第一次导入日历时,这是 0,表示星期一。
    3
    calendar.isleap(year)
    如果年份是闰年,则返回 True;否则,假。
    4
    calendar.leapdays(y1,y2)
    返回范围 (y1,y2) 内年份的闰日总数。
    5
    calendar.month(year,month,w = 2,l = 1)
    返回一个多行字符串,其中包含年月月的日历,每周一行加上两个标题行。w 是每个日期的字符宽度;每行的长度为 7*w+6。l 是每周的行数。
    6
    calendar.monthcalendar(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.month(year,month,w,l)。
    10
    calendar.setfirstweekday(weekday)
    将每周的第一天设置为工作日代码工作日。工作日代码为 0(星期一)到 6(星期日)。
    11
    calendar.timegm(tupletime)
    time.gmtime 的倒数:接受时间元组形式的时间瞬间,并返回与纪元以来的浮点秒数相同的瞬间。
    12
    calendar.weekday(year,month,day)
    返回给定日期的工作日代码。工作日代码为 0(星期一)到 6(星期日);月份数字为 1(一月)到 12(十二月)。
  • 其他模块和功能

    如果您有兴趣,那么在这里您会找到其他重要模块和函数的列表,这些模块和函数可以在 Python 中处理日期和时间 -