📜  Python 3-日期和时间

📅  最后修改于: 2020-12-23 04:52:33             🧑  作者: Mango


Python程序可以通过几种方式处理日期和时间。在日期格式之间进行转换是计算机的常见任务。 Python的时间和日历模块有助于跟踪日期和时间。

什么是T

时间间隔是浮点数,以秒为单位。时间的特定时刻以自1970年1月1日上午12:00(纪元)以来的秒数表示。

Python提供了一个流行的时间模块,该模块提供了处理时间以及在表示之间转换的功能。函数time.time()毫秒为单位返回自1970年1月1日(纪元)上午12:00开始的当前系统时间。

#!/usr/bin/python3
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: 1455508609.34375

日期运算很容易用滴答作响。但是,纪元之前的日期不能以这种形式表示。遥远的将来的日期也无法用这种方式表示-对于UNIX和Windows,截止日期是2038年的某个时候。

什么是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 time

print (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结构。该结构具有以下属性-

Index Attributes Values
0 tm_year 2016
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/python3
import time

localtime = 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/python3
import time

localtime = 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/python3
import calendar

cal = calendar.month(2016, 2)
print ("Here is the calendar:")
print (cal)

这将产生以下结果-

Here is the calendar:
   February 2016
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

时间模块

Python中提供了一个流行的时间模块,该模块提供用于处理时间以及在表示之间转换的功能。这是所有可用方法的列表。

Sr.No. Function & 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). Use this if the 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 & 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 & 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与日期和时间一起使用-