Date & Time
Python程序可以通过多种方式处理日期和时间。 日期格式之间的转换是计算机的常见工作。 Python的时间和日历模块有助于跟踪日期和时间。
什么是Tick?
时间间隔是以秒为单位的浮点数。 特定的时间瞬间以1970年1月1日凌晨12:00(纪元)的秒数表示。
Python中有一个流行的time模块,它提供了处理时间和表示之间转换的功能。 函数time.time()以1970年1月1日凌晨12:00(纪元)为单位返回当前系统时间。
例子 (Example)
#!/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个数字的元组处理,如下所示 -
指数 | 领域 | 值 |
---|---|---|
0 | 4-digit year | 2008 |
1 | Month | 1 to 12 |
2 | Day | 1 to 31 |
3 | Hour | 0到23 |
4 | Minute | 0到59 |
5 | Second | 0到61(60或61是闰秒) |
6 | 星期几 | 0到6(0是星期一) |
7 | Day of year | 1至366(朱利安日) |
8 | Daylight savings | -1,0,1,-1表示库确定DST |
上面的元组等同于struct_time结构。 该结构具有以下属性 -
指数 | 属性 | 值 |
---|---|---|
0 | tm_year | 2008 |
1 | tm_mon | 1 to 12 |
2 | tm_mday | 1 to 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 |
获取当前时间
要将时间点从从seconds since the epoch浮点值开始的seconds since the 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
获得一个月的日历
日历模块提供了多种方法来播放年度和月度日历。 在这里,我们打印给定月份的日历(2008年1月) -
#!/usr/bin/python
import calendar
cal = calendar.month(2008, 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中有一个流行的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。 注意: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模块
日历模块提供与日历相关的功能,包括打印给定月份或年份的文本日历的功能。
默认情况下,日历将星期一视为一周的第一天,将星期日视为最后一天。 要更改此设置,请调用calendar.setfirstweekday()函数。
以下是calendar模块可用的功能列表 -
Sr.No. | 具有描述的功能 |
---|---|
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) 喜欢打印calendar.calendar(年,w,l,c)。 |
9 | calendar.prmonth(year,month,w=2,l=1) 像打印calendar.month(年,月,w,l)。 |
10 | calendar.setfirstweekday(weekday) 将每周的第一天设置为工作日代码工作日。 工作日代码为0(星期一)至6(星期日)。 |
11 | calendar.timegm(tupletime) time.gmtime的倒数:接受时间元组形式的时间瞬间,并返回与纪元以来的浮点秒数相同的瞬间。 |
12 | calendar.weekday(year,month,day) 返回给定日期的工作日代码。 工作日代码为0(星期一)至6(星期日); 月数是1(1月)到12(12月)。 |
Other Modules & 函数
如果您有兴趣,那么您可以在这里找到其他重要的模块和函数列表,以便在Python中使用日期和时间 -