Python - 日期和时间
上一页下一页
Python 程序可以通过多种方式处理日期和时间。在日期格式之间转换是计算机的一项常见工作。 Python 的时间和日历模块有助于跟踪日期和时间。
什么是滴答声?
时间间隔是以秒为单位的浮点数。从 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 个数字的元组,如下所示 -
索引 | 字段 | 价值观 |
---|---|---|
0 | 四位数年份 | 2008 |
1 | 月 | 1 到 12 |
2 | 天 | 1 到 31 |
3 | 小时 | 0 到 23 |
4 | 分钟 | 0 到 59 |
5 | 第二 | 0 到 61(60 或 61 是闰秒) |
6 | 星期几 | 0 到 6(0 是星期一) |
7 | 一年中的一天 | 1 到 366(儒略日) |
8 | 夏令时 | -1, 0, 1, -1 表示库决定夏令时 |
上面的元组等价于 struct_time 结构体。该结构具有以下属性 -
索引 | 属性 | 价值观 |
---|---|---|
0 | tm_year | 2008 |
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 到 6(0 是星期一) |
7 | tm_yday | 1 到 366(儒略日) |
8 | tm_isdst | -1, 0, 1, -1 表示库决定夏令时 |
获取当前时间
从纪元以来的秒转换时间瞬间 将浮点值转换为时间元组,将浮点值传递给函数(例如本地时间),该函数返回所有九项都有效的时间元组。
现场演示#!/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. | 函数说明 |
---|---|
1 | time.altzone 本地 DST 时区的偏移量,以 UTC 以西的秒数为单位(如果已定义)。如果当地 DST 时区在 UTC 以东(如在西欧,包括英国),则这是负数。仅当日光不为零时才使用此选项。 |
2 | time.asctime([元组时间]) 接受一个时间元组并返回一个可读的 24 个字符的字符串,例如 'Tue Dec 11 18:07:14 2008'。 |
3 | time.clock( ) 以浮点秒数返回当前 CPU 时间。要衡量不同方法的计算成本,time.clock 的值比 time.time() 的值更有用。 |
4 | time.ctime([秒]) 像 asctime(localtime(secs)) 并且没有参数就像 asctime( ) |
5 | time.gmtime([秒]) 接受自纪元以来以秒表示的瞬间,并返回带有 UTC 时间的时间元组 t。注意:t.tm_isdst 始终为 0 |
6 | time.localtime([秒]) 接受自纪元以来以秒表示的瞬间,并返回一个带有本地时间的时间元组 t(t.tm_isdst 为 0 或 1,取决于 DST 是否适用于本地规则的瞬间秒)。 |
7 | time.mktime(元组时间) 接受以本地时间表示为时间元组的瞬间,并返回一个浮点值,该瞬间以自纪元以来的秒数表示。 |
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 是本地时区(不含 DST)与 UTC 的偏移量(以秒为单位)(在美洲>0;在欧洲、亚洲、非洲的大部分地区 <=0)。 |
2 | 时间.tzname 属性 time.tzname 是一对依赖于语言环境的字符串,分别是不带夏令时和带夏令时的本地时区名称。 |
日历 模块
calendar 模块提供与日历相关的功能,包括打印给定月份或年份的文本日历的功能。
默认情况下,日历将星期一作为一周的第一天,将星期日作为最后一天。要更改这一点,请调用 calendar.setfirstweekday() 函数。
以下是 日历 可用的功能列表 模块 -
Sr.No. | 函数说明 |
---|---|
1 | calendar.calendar(年,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) 返回 range(y1,y2) 内年份的闰日总数。 |
5 | calendar.month(year,month,w=2,l=1) 返回一个多行字符串,其中包含一年中月份的日历,每周一行加上两个标题行。 w 是每个日期的字符宽度;每行的长度为 7*w+6。 l 是每周的行数。 |
6 | calendar.monthcalendar(年,月) 返回整数列表的列表。每个子列表表示一周。年月月外的天数设置为 0;月内的天数设置为当月的第 1 天及以上。 |
7 | calendar.monthrange(年,月) 返回两个整数。第一个是年年月月第一天的工作日代码;第二个是一个月的天数。工作日代码为 0(星期一)至 6(星期日);月份数字是 1 到 12。 |
8 | calendar.prcal(year,w=2,l=1,c=6) 比如打印 calendar.calendar(year,w,l,c)。 |
9 | calendar.prmonth(年,月,w=2,l=1) 比如打印 calendar.month(year,month,w,l)。 |
10 | calendar.setfirstweekday(工作日) 将每周的第一天设置为工作日代码工作日。工作日代码为 0(星期一)到 6(星期日)。 |
11 | calendar.timegm(tupletime) time.gmtime 的倒数:接受时间元组形式的时间瞬间,并返回与自纪元以来的浮点秒数相同的瞬间。 |
12 | calendar.weekday(年、月、日) 返回给定日期的工作日代码。工作日代码为 0(星期一)至 6(星期日);月份数字是 1(一月)到 12(十二月)。 |
其他模块和功能
如果您有兴趣,那么在这里您可以找到在 Python 中使用日期和时间的其他重要模块和函数的列表 -
-
日期时间 模块
-
pytz 模块
-
dateutil 模块
Python