Python程序可以处理多种方式的日期和时间。日期格式之间的转换是一种常见计算机的杂活。
Python的时间和日历模块,能帮助处理日期和时间。
Tick是什么?
时间间隔为浮点数以秒为单位的数字。在特定的时间瞬间自上午12时00分,1970年1月1日(纪元)表示,单位为秒。
Python中可用的流行时间模块,它提供功能转换。该功能time.time()返回当前系统时间,因为上午12点,1970年1月1日(时代)。
例子:
#!/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 |
日期计算是很容易。不过当日的时代之前,不能以这种形式来表示。在遥远的将来的日期也不能代表这种方式- 分界点是一段2038年在UNIX和Windows。
什么是TimeTuple?
Python的时间函数处理时间为9个数字的元组,如下图所示:
上面的元组相当于struct_time结构。这种结构具有以下属性:
获取当前时间 :
转换一个时刻从秒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])
接收表示从epoch秒钟的瞬间,并返回一个时间元组t与被本地时间(t.tm_isdst是0或1,这取决于是否DST的适用于即时秒通过本地规则) |
7 |
time.mktime(tupletime)
接受表示为一个时间的元组中的本地时间瞬间,并返回浮点值从epoch以秒表示的时刻 |
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模块提供两个重要的属性:
calendar 模块
日历calendar模块提供与日历相关的功能,包括功能来打印一个文本日历对于给定的月份或年份。
默认情况下,日历把星期一作为一周的第一天,周日为最后一天。要改变这种情况,调用calendar.setfirstweekday()函数。
下面是日历calendar模块可用的功能列表:
|