Python 日期和时间
Python 程序可以通过几种方式处理日期和时间。在日期格式之间进行转换是计算机的常见任务。 Python 的时间和日历模块有助于跟踪日期和时间。
什么是 T
时间间隔是浮点数,以秒为单位。时间的特定瞬间以自 1970 年 1 月 1 日(纪元) 00:00:00 开始的秒数表示。
Python 提供了一个流行的 时间 模块,该模块提供了处理时间以及在表示之间转换的功能。函数time.time()以秒为单位返回自 1970 年 1 月 1 日(纪元)00:00:00 开始的当前系统时间。
例子
#!/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
日期运算很容易用滴答作响。但是,纪元之前的日期不能以这种形式表示。遥远的将来的日期也无法用这种方式表示-对于 UNIX 和 Windows,截止日期是 2038 年的某个时候。
什么是 TimeTuple?
Python 的许多时间函数将时间作为 9 个数字的元组来处理,如下所示-
Index | Field | Values |
---|---|---|
0 | 4-digit year | 2008 |
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 |
上面的元组等效于 struct_time 结构。该结构具有以下属性-
Index | Attributes | Values |
---|---|---|
0 | tm_year | 2008 |
1 | tm_mon | 1 to 12 |
2 | tm_mday | 1 to 31 |
3 | tm_hour | 0 to 23 |
4 | tm_min | 0 to 59 |
5 | tm_sec | 0 to 61 (60 or 61 are leap-seconds) |
6 | tm_wday | 0 to 6 (0 is Monday) |
7 | tm_yday | 1 to 366 (Julian day) |
8 | tm_isdst | -1, 0, 1, -1 means library determines DST |
获取当前时间
若要将自纪元浮点值以来的秒数转换为时间元组,请将浮点值传递给一个函数(例如 localtime),该函数返回一个具有所有九项有效的时间元组。
#!/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
时间模块
Python 中提供了一个流行的 时间 模块,该模块提供用于处理时间以及在表示之间转换的功能。这是所有可用方法的列表-
Sr.No. | Function with Description |
---|---|
1 | time.altzone The offset of the local DST timezone, in seconds west of UTC, if one is defined. This is negative if the local DST timezone is east of UTC (as in Western Europe, including the UK). Only use this if daylight is nonzero. |
2 | time.asctime([tupletime]) Accepts a time-tuple and returns a readable 24-character string such as ‘Tue Dec 11 18:07:14 2008’. |
3 | time.clock( ) Returns the current CPU time as a floating-point number of seconds. To measure computational costs of different approaches, the value of time.clock is more useful than that of time.time(). |
4 | time.ctime([secs]) Like asctime(localtime(secs)) and without arguments is like asctime( ) |
5 | time.gmtime([secs]) Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the UTC time. Note : t.tm_isdst is always 0 |
6 | time.localtime([secs]) Accepts an instant expressed in seconds since the epoch and returns a time-tuple t with the local time (t.tm_isdst is 0 or 1, depending on whether DST applies to instant secs by local rules). |
7 | time.mktime(tupletime) Accepts an instant expressed as a time-tuple in local time and returns a floating-point value with the instant expressed in seconds since the epoch. |
8 | time.sleep(secs) Suspends the calling thread for secs seconds. |
9 | time.strftime(fmt[,tupletime]) Accepts an instant expressed as a time-tuple in local time and returns a string representing the instant as specified by string fmt. |
10 | time.strptime(str,fmt=’%a %b %d %H:%M:%S %Y’) Parses str according to format string fmt and returns the instant in time-tuple format. |
11 | time.time( ) Returns the current time instant, a floating-point number of seconds since the epoch. |
12 | time.tzset() Resets the time conversion rules used by the library routines. The environment variable TZ specifies how this is done. |
让我们简要地介绍一下功能-
时间模块提供以下两个重要属性-
Sr.No. | Attribute with Description |
---|---|
1 | time.timezone Attribute time.timezone is the offset in seconds of the local time zone (without DST) from UTC (>0 in the Americas; <=0 in most of Europe, Asia, Africa). |
2 | time.tzname Attribute time.tzname is a pair of locale-dependent strings, which are the names of the local time zone without and with DST, respectively. |
日历模块
日历模块提供了与日历相关的功能,包括用于打印给定月份或年份的文本日历的功能。
默认情况下,日历将星期一作为一周的第一天,将星期日作为最后一天。要更改此设置,请调用 calendar.setfirstweekday() 函数。
这是日历模块可用的功能列表-
Sr.No. | Function with Description |
---|---|
1 | calendar.calendar(year,w=2,l=1,c=6) Returns a multiline string with a calendar for year year formatted into three columns separated by c spaces. w is the width in characters of each date; each line has length 21*w+18+2*c. l is the number of lines for each week. |
2 | calendar.firstweekday( ) Returns the current setting for the weekday that starts each week. By default, when calendar is first imported, this is 0, meaning Monday. |
3 | calendar.isleap(year) Returns True if year is a leap year; otherwise, False. |
4 | calendar.leapdays(y1,y2) Returns the total number of leap days in the years within range(y1,y2). |
5 | calendar.month(year,month,w=2,l=1) Returns a multiline string with a calendar for month month of year year, one line per week plus two header lines. w is the width in characters of each date; each line has length 7*w+6. l is the number of lines for each week. |
6 | calendar.monthcalendar(year,month) Returns a list of lists of ints. Each sublist denotes a week. Days outside month month of year year are set to 0; days within the month are set to their day-of-month, 1 and up. |
7 | calendar.monthrange(year,month) Returns two integers. The first one is the code of the weekday for the first day of the month month in year year; the second one is the number of days in the month. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 to 12. |
8 | calendar.prcal(year,w=2,l=1,c=6) Like print calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w=2,l=1) Like print calendar.month(year,month,w,l). |
10 | calendar.setfirstweekday(weekday) Sets the first day of each week to weekday code weekday. Weekday codes are 0 (Monday) to 6 (Sunday). |
11 | calendar.timegm(tupletime) The inverse of time.gmtime: accepts a time instant in time-tuple form and returns the same instant as a floating-point number of seconds since the epoch. |
12 | calendar.weekday(year,month,day) Returns the weekday code for the given date. Weekday codes are 0 (Monday) to 6 (Sunday); month numbers are 1 (January) to 12 (December). |
其他模块和功能
如果您有兴趣,那么您会在这里找到其他重要模块和函数的列表,这些模块和函数可在 Python 与日期和时间一起使用-
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论