Python程序可以处理多种方式的日期和时间。日期格式之间的转换是一种常见计算机的杂活。 Python的时间和日历模块,能帮助处理日期和时间。
Tick是什么?
为时间间隔,以秒为单位的浮点数。从“新纪元”的1月1日0点开始计算到现在的秒数(新纪元是一个与平台相关的年份,对UNIX来说是1970年)。
Python中可用的流行时间模块,可提供功能转换。如time.time()返回当前系统时间。
例子:
#!/usr/bin/python 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: 7186862.73399
什么是TimeTuple?
Python的时间函数处理时间为9个数字的元组,如下图所示:
索引 | 字段 | 值 |
---|---|---|
0 | 年(四位数字) | 2015 |
1 | 月份 | 1 - 12 |
2 | 日期 | 1 - 31 |
3 | 小时 | 0 - 23 |
4 | 分钟 | 0 - 59 |
5 | 秒 | 0 - 61 (60 或 61是闰秒) |
6 | 星期 | 0 - 6 (0 为星期一) |
7 | 一年中的第几天 | 1 - 366 (Julian日期) |
8 | 夏令时 | -1, 0, 1, -1 表示库决定DST |
上面的元组相当于struct_time结构。这种结构具有以下属性:
索引 | 属性 | 值 |
---|---|---|
0 | tm_year | 2018 |
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 to 6 (0 为星期一) |
7 | tm_yday | 1 to 366 (Julian日期) |
8 | tm_isdst | -1, 0, 1, -1 表示库决定DST |
获取当前时间 :
转换一个时刻从秒epoch浮点值转换成时元组,浮点值传递给函数(例如,本地时间)返回时间元组的全部九项有效。
#!/usr/bin/python import time; localtime = time.localtime(time.time()) print "Local current time :", localtime
这将产生下面的结果,这可以在任何其他像样形式被格式化:
Local current time : time.struct_time(tm_year=2013, tm_mon=7, tm_mday=17, tm_hour=21, tm_min=26, tm_sec=3, tm_wday=2, tm_yday=198, tm_isdst=0)
获取格式化的时间 :
可以随时根据要求格式化,但简单的方法来获取时间,可读的格式是asctime():
#!/usr/bin/python import time; localtime = time.asctime( time.localtime(time.time()) ) print"Local current time :", localtime
这将产生以下结果:
Local current time : Tue Jan 13 10:17:09 2009
获取日历月份:
日历模块提供了广泛的方法,如有年和月的日历。在这里,我们打印日历给定月份(2015年1月):
#!/usr/bin/python import calendar cal = calendar.month(2015, 1) print "Here is the calendar:"print cal;
这将产生以下结果:
Here is the calendar: January 2008 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
time模块:
Python中可用的流行时间模块,时间之间转换提供了以下一些函数。下面是所有可用方法的列表:
SN | 方法及描述 |
---|---|
1 | time.altzone 当地DST时区的偏移量,如果一个定义在UTC西部秒钟。这是负值,如果当地的DST时区为UTC东边(如西欧,包括英国)。如果白天不为零只用这个。 |
2 | time.asctime([tupletime]) 接受一个时间元组,并返回一个可读的24个字符的字符串,如“Tue Dec 11 18:07:14 2015'。 |
3 | time.clock( ) 返回当前CPU时间为几秒钟的浮点数。以测量不同方法的计算成本,time.clock的值比time.time()更有用 |
4 | time.ctime([secs]) 类似asctimeasctime(localtime(secs)),不带参数就像asctime() |
5 | time.gmtime([secs]) 接收表示从epoch秒钟的瞬间,并返回一个时间元组t及UTC时间。注意:t.tm_isdst始终为0 |
6 | time.localtime([secs]) 将实数转化为本地时间的日期元组。如果想获得全球统一时间,可使用gmtime() |
7 | time.mktime(tupletime) 将日期元组转化为从新纪元开始计算的秒数,与localtime的功能相反 |
8 | time.sleep(secs) 暂停secs秒钟调用线程 |
9 | time.strftime(fmt[,tupletime]) 接收表示为一个时间的元组中的本地时间瞬间并返回表示所指定的字符串fmt瞬间的字符串 |
10 | time.strptime(str,fmt='%a %b %d %H:%M:%S %Y') 根据格式字符串格式化解析str并返回时间元组格式 |
11 | time.time( ) 返回当前时刻,新纪元开始后的秒数 |
12 | time.tzset() 重置所使用的库例程的时间转换规则。环境变量TZ指定如何完成此操作。 |
如上红色标注函数使用较频繁!
下列是时间time模块提供两个重要的属性:
SN | 属性及描述 |
---|---|
1 | time.timezone 属性time.timezone是从UTC(>0,在美洲;<=0,在大多数欧洲,亚洲,非洲),抵销了本地时区的秒钟(不含DST)。 |
2 | time.tzname 属性time.tzname是一对语言环境相关的字符串,这是本地时区的名称。 |
calendar 模块
日历calendar模块提供与日历相关的功能,包括功能来打印一个文本日历对于给定的月份或年份。
默认情况下,日历把星期一作为一周的第一天,周日为最后一天。要改变这种情况,调用calendar.setfirstweekday()函数。
下面是日历calendar模块可用的功能列表:
SN | 方法及描述 |
---|---|
1 | calendar.calendar(year,w=2,l=1,c=6) 返回为多行字符串的逐年日历格式化成用c空格分隔的三列。 w是中的每一个日期字符的宽度;每行的长度为21* w +18+2* c。 l为每个星期的行数。 |
2 | calendar.firstweekday( ) 返回当前设置为每个星期开始工作日。默认情况下,当先导入calendar,这是0,意思是星期一。 |
3 | calendar.isleap(year) 如果今年是闰年返回true,否则为false。 |
4 | calendar.leapdays(y1,y2) 返回范围内的总数在range(y1,y2)。 |
5 | calendar.month(year,month,w=2,l=1) 返回为多行字符串与日历月month年year,每周一条线加上两个标题行。 w是中的每一个日期字符的宽度;每行的长度为7* W +6。 l为每个星期的行数。 |
6 | calendar.monthcalendar(year,month) 返回整数的列表。每个子列表表示一个星期。月month年year都设置为0;在一个月内,day都被设置为一天,月份,1及以上的数字。 |
7 | calendar.monthrange(year,month) 返回两个整数。第一个是星期几月month年year的第一天的代码;第二个是在所述月份的天数。星期代码是0(星期一)至6日(星期日);月数是1?12。 |
8 | calendar.prcal(year,w=2,l=1,c=6) 打印类似calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w=2,l=1) 打印类似calendar.month(year,month,w,l). |
10 | calendar.setfirstweekday(weekday) 将每个星期的第一天工作日代码设置。星期代码是0(星期一)至6日(星期日)。 |
11 | calendar.timegm(tupletime) time.gmtime的反向:接受一个时刻在时间元组的形式,并返回同一时刻为从epoch浮点秒数。 |
12 | calendar.weekday(year,month,day) 返回给定日期的星期代码。星期代码0(星期一)至6日(星期日);月份数字代码为1(一月)到12(12月)。 |
其它模块和函数:
如果有兴趣,那么在这里也要找到其他重要的模块和功能,如:日期和时间在Python使用: