Python程序可以通过多种方式处理日期和时间.日期格式之间的转换是计算机的常见工作. Python的时间和日历模块有助于跟踪日期和时间.
什么是Tick?
时间间隔是以秒为单位的浮点数.特定的时间瞬间以1970年1月1日凌晨12:00(纪元)的秒数表示.
Python提供了一个流行的时间模块,提供用于处理时间和在表示之间进行转换的函数.函数 time.time()以1970年1月1日上午12:00(纪元)以来的当前系统时间返回当前系统时间.
示例
#!/usr/bin/python3import 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
日期算术很容易用ticks.但是,时期之前的日期无法以此形式表示.远期未来的日期也无法用这种方式表示 - 截止点是2038年UNIX和Windows的某个时间点.
什么是TimeTuple?
许多Python的时间函数将时间作为9个数字的元组处理,如下所示 :
Index | Field | Values |
---|---|---|
0 | 4-digit year | 2016 |
1 | Month | 1 to 12 |
2 | Day | 1 to 31 |
3 | Hour | 0 to 23 |
4 | Minute | 0 to 59 |
5 | Second | 0 to 61 (60 or 61 are leap-seconds) |
6 | Day of Week | 0 to 6 (0 is Monday) |
7 | Day of year | 1 to 366 (Julian day) |
8 | Daylight savings | -1, 0, 1, -1 means library determines DST |
例如 :
import timeprint (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(Julian day) |
8 | tm_isdst | -1,0,1,-1表示库确定DST |
获取当前时间
要将从纪元浮点值开始的秒数转换为时间点,请通过函数的浮点值(例如,localtime)返回包含所有有效九项的时间元组.
#!/usr/bin/python3import timelocaltime = 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/python3import timelocaltime = 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/python3import calendarcal = calendar.month(2016, 2)print ("Here is the calendar:")print (cal)
这会产生以下结果 :
Here is the calendar: February 2016Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 1415 16 17 18 19 20 2122 23 24 25 26 27 2829
时间模块
Python中提供了一个流行的 time 模块,它提供了处理时间和表示之间转换的功能.以下是所有可用方法的列表.
Sr.No. | 功能&描述 |
---|---|
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.tm_isdst始终为0 |
6 | time.localtime([secs]) 接受自纪元以来以秒为单位表示的瞬间,并以当地时间返回时间元组t(t.tm_isdst为0或1,具体取决于DST是否适用于本地规则的即时秒). |
7 | time.mktime(tupletime) 接受表示为时间的瞬间 - 在当地时间的元组,并返回一个浮点值,以及自纪元以来的秒数表示的瞬间. |
8 | time.sleep(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指定如何完成此操作. |
时间模块有两个重要的属性.它们是 :
Sr.No. | 属性和描述 |
---|---|
1 | time.timezone 属性time.timezone是偏移量以UTC为单位的本地时区(不含DST)的秒数(美洲为> 0;欧洲,亚洲,非洲大部分地区为<= 0). |
2 | time.tzname 属性time.tzname是一对依赖于语言环境的字符串,它们分别是没有和有DST的本地时区的名称. |
日历模块
日历模块提供与日历相关的功能,包括打印给定月份或年份的文本日历的功能.
默认情况下,日历将星期一作为一周的第一天,星期日作为最后一天.要更改此项,请调用 calendar.setfirstweekday()函数.
以下是日历模块可用的功能列表 :
Sr.No. | 功能和描述 |
---|---|
1 | calendar.calendar(年份,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(年,月,w = 2,l = 1) 返回一个多行字符串,其中包含一年中一个月的日历,每周一行加上两个标题行.w是每个日期的字符宽度;每行的长度为7 * w+ 6.l是每周的行数. |
6 | calendar.monthcalendar(年,月) 返回每个子列表表示一周.每年的月份之外的日期设置为0;月份中的日期设置为其日期,1和更高. |
7 | calendar.monthrange(年,月) 返回2第一个是一年中第一天的工作日代码;第二个是月中的天数.工作日代码是0(星期一)到6(星期日);月数是1到12. |
8 | calendar.prcal(年份,w = 2,l = 1,c = 6) 喜欢打印calendar.calendar(年,w,l,c). |
9 | calendar.prmonth(年,月,w = 2,l = 1) 喜欢打印calendar.month(年,月,w,l). |
10 | calendar.setfirstweekday(工作日) 设置第一天每周工作日代码工作日.工作日代码为0(星期一)至6(星期日). |
11 | calendar.timegm(tupletime) 时间的倒数.gmtime:接受时间元组形式的时间瞬间,并返回与纪元以来的浮点数秒相同的瞬间. |
12 | calendar.weekday(年,月,日) 返回给定日期的工作日代码.工作日代码为0(星期一)到6(星期日);月份数为1(1月)到12(12月). |
其他模块和函数
如果您有兴趣,那么您可以在这里找到其他重要模块和函数的列表.在Python中使用日期和时间&减去;
日期时间模块
pytz模块
dateutil模块