在本文中,我们将详细探讨时间模块。 通过示例,我们将学习使用在时间模块中定义的与时间相关的不同函数。
Python 有一个名为time
的模块来处理与时间有关的任务。 要使用模块中定义的函数,我们需要首先导入模块。 这是如何做:
1 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> |
这是常用的时间相关函数。
Python time.time()
time()
函数返回自纪元以来经过的秒数。
对于 Unix 系统,在 UTC 处的January 1, 1970, 00:00:00
是时代(时间开始的点)。
1 2 3 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">time</span>() <span class="pl-en">print</span>(<span class="pl-s">"Seconds since epoch ="</span>, <span class="pl-s1">seconds</span>) |
Python time.ctime()
time.ctime()
函数从纪元起经过了几秒钟,并将其作为代表本地时间的字符串。
1 2 3 4 5 6 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-c"># seconds passed since epoch</span> <span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">1545925769.9618232</span> <span class="pl-s1">local_time</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">ctime</span>(<span class="pl-s1">seconds</span>) <span class="pl-en">print</span>(<span class="pl-s">"Local time:"</span>, <span class="pl-s1">local_time</span>) |
如果运行该程序,输出将类似于:
1 |
<span class="pl-v">Local</span> <span class="pl-s1">time</span>: <span class="pl-v">Thu</span> <span class="pl-v">Dec</span> <span class="pl-c1">27</span> <span class="pl-c1">15</span>:<span class="pl-c1">49</span>:<span class="pl-c1">29</span> <span class="pl-c1">2018</span> |
Python time.sleep()
sleep()
函数在给定的秒数内暂停(延迟)当前线程的执行。
1 2 3 4 5 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-en">print</span>(<span class="pl-s">"This is printed immediately."</span>) <span class="pl-s1">time</span>.<span class="pl-en">sleep</span>(<span class="pl-c1">2.4</span>) <span class="pl-en">print</span>(<span class="pl-s">"This is printed after 2.4 seconds."</span>) |
要了解更多信息,请访问: Python sleep()
。
在讨论其他与时间相关的函数之前,让我们简要探讨time.struct_time
类。
time.struct_time
类别
time
模块中的某些函数,例如gmtime()
,asctime()
等,都可以将time.struct_time
对象作为参数或将其返回。
这是time.struct_time
对象的示例。
1 2 3 |
<span class="pl-s1">time</span>.<span class="pl-en">struct_time</span>(<span class="pl-s1">tm_year</span><span class="pl-c1">=</span><span class="pl-c1">2018</span>, <span class="pl-s1">tm_mon</span><span class="pl-c1">=</span><span class="pl-c1">12</span>, <span class="pl-s1">tm_mday</span><span class="pl-c1">=</span><span class="pl-c1">27</span>, <span class="pl-s1">tm_hour</span><span class="pl-c1">=</span><span class="pl-c1">6</span>, <span class="pl-s1">tm_min</span><span class="pl-c1">=</span><span class="pl-c1">35</span>, <span class="pl-s1">tm_sec</span><span class="pl-c1">=</span><span class="pl-c1">17</span>, <span class="pl-s1">tm_wday</span><span class="pl-c1">=</span><span class="pl-c1">3</span>, <span class="pl-s1">tm_yday</span><span class="pl-c1">=</span><span class="pl-c1">361</span>, <span class="pl-s1">tm_isdst</span><span class="pl-c1">=</span><span class="pl-c1">0</span>) |
序号 | 属性 | 值 |
---|---|---|
0 | tm_year |
0000,….,2018,…,9999 |
1 | tm_mon |
1,2,…,12 |
2 | tm_mday |
1,2,…,31 |
3 | tm_hour |
0,1,…,23 |
4 | tm_min |
0,1,…,59 |
5 | tm_sec |
0,1,…,61 |
6 | tm_wday |
0,1,…,6;星期一是 0 |
7 | tm_yday |
1,2,…,366 |
8 | tm_isdst |
0、1 或 -1 |
可以使用索引和属性访问time.struct_time
对象的值(元素)。
Python time.localtime()
localtime()
函数将自纪元以来经过的秒数作为参数,并在当地时间中返回struct_time
。
1 2 3 4 5 6 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">localtime</span>(<span class="pl-c1">1545925769</span>) <span class="pl-en">print</span>(<span class="pl-s">"result:"</span>, <span class="pl-s1">result</span>) <span class="pl-en">print</span>(<span class="pl-s">"<span class="pl-cce">\n</span>year:"</span>, <span class="pl-s1">result</span>.<span class="pl-s1">tm_year</span>) <span class="pl-en">print</span>(<span class="pl-s">"tm_hour:"</span>, <span class="pl-s1">result</span>.<span class="pl-s1">tm_hour</span>) |
当您运行程序时,输出将类似于:
1 2 3 4 |
<span class="pl-s1">result</span>: <span class="pl-s1">time</span>.<span class="pl-en">struct_time</span>(<span class="pl-s1">tm_year</span><span class="pl-c1">=</span><span class="pl-c1">2018</span>, <span class="pl-s1">tm_mon</span><span class="pl-c1">=</span><span class="pl-c1">12</span>, <span class="pl-s1">tm_mday</span><span class="pl-c1">=</span><span class="pl-c1">27</span>, <span class="pl-s1">tm_hour</span><span class="pl-c1">=</span><span class="pl-c1">15</span>, <span class="pl-s1">tm_min</span><span class="pl-c1">=</span><span class="pl-c1">49</span>, <span class="pl-s1">tm_sec</span><span class="pl-c1">=</span><span class="pl-c1">29</span>, <span class="pl-s1">tm_wday</span><span class="pl-c1">=</span><span class="pl-c1">3</span>, <span class="pl-s1">tm_yday</span><span class="pl-c1">=</span><span class="pl-c1">361</span>, <span class="pl-s1">tm_isdst</span><span class="pl-c1">=</span><span class="pl-c1">0</span>) <span class="pl-s1">year</span>: <span class="pl-c1">2018</span> <span class="pl-s1">tm_hour</span>: <span class="pl-c1">15</span> |
如果没有参数或None
传递给localtime()
,则使用time()
返回的值。
Python time.gmtime()
gmtime()
函数将自纪元以来经过的秒数作为参数,并在 UTC 中返回struct_time
。
1 2 3 4 5 6 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">gmtime</span>(<span class="pl-c1">1545925769</span>) <span class="pl-en">print</span>(<span class="pl-s">"result:"</span>, <span class="pl-s1">result</span>) <span class="pl-en">print</span>(<span class="pl-s">"<span class="pl-cce">\n</span>year:"</span>, <span class="pl-s1">result</span>.<span class="pl-s1">tm_year</span>) <span class="pl-en">print</span>(<span class="pl-s">"tm_hour:"</span>, <span class="pl-s1">result</span>.<span class="pl-s1">tm_hour</span>) |
运行该程序时,输出为:
1 2 3 4 |
<span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">struct_time</span>(<span class="pl-s1">tm_year</span><span class="pl-c1">=</span><span class="pl-c1">2018</span>, <span class="pl-s1">tm_mon</span><span class="pl-c1">=</span><span class="pl-c1">12</span>, <span class="pl-s1">tm_mday</span><span class="pl-c1">=</span><span class="pl-c1">28</span>, <span class="pl-s1">tm_hour</span><span class="pl-c1">=</span><span class="pl-c1">8</span>, <span class="pl-s1">tm_min</span><span class="pl-c1">=</span><span class="pl-c1">44</span>, <span class="pl-s1">tm_sec</span><span class="pl-c1">=</span><span class="pl-c1">4</span>, <span class="pl-s1">tm_wday</span><span class="pl-c1">=</span><span class="pl-c1">4</span>, <span class="pl-s1">tm_yday</span><span class="pl-c1">=</span><span class="pl-c1">362</span>, <span class="pl-s1">tm_isdst</span><span class="pl-c1">=</span><span class="pl-c1">0</span>) <span class="pl-s1">year</span> <span class="pl-c1">=</span> <span class="pl-c1">2018</span> <span class="pl-s1">tm_hour</span> <span class="pl-c1">=</span> <span class="pl-c1">8</span> |
如果没有参数或None
传递给gmtime()
,则使用time()
返回的值。
Python time.mktime()
mktime()
函数将struct_time
(或包含 9 个元素的元组,与struct_time
对应的元组)作为参数,并返回自当地时间的纪元以来经过的秒数。 基本上,它是localtime()
的反函数。
1 2 3 4 5 6 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">t</span> <span class="pl-c1">=</span> (<span class="pl-c1">2018</span>, <span class="pl-c1">12</span>, <span class="pl-c1">28</span>, <span class="pl-c1">8</span>, <span class="pl-c1">44</span>, <span class="pl-c1">4</span>, <span class="pl-c1">4</span>, <span class="pl-c1">362</span>, <span class="pl-c1">0</span>) <span class="pl-s1">local_time</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">mktime</span>(<span class="pl-s1">t</span>) <span class="pl-en">print</span>(<span class="pl-s">"Local time:"</span>, <span class="pl-s1">local_time</span>) |
下面的示例显示mktime()
和localtime()
之间的关系。
1 2 3 4 5 6 7 8 9 10 11 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">1545925769</span> <span class="pl-c"># returns struct_time</span> <span class="pl-s1">t</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">localtime</span>(<span class="pl-s1">seconds</span>) <span class="pl-en">print</span>(<span class="pl-s">"t1: "</span>, <span class="pl-s1">t</span>) <span class="pl-c"># returns seconds from struct_time</span> <span class="pl-s1">s</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">mktime</span>(<span class="pl-s1">t</span>) <span class="pl-en">print</span>(<span class="pl-s">"\s:"</span>, <span class="pl-s1">seconds</span>) |
当您运行程序时,输出将类似于:
1 2 3 |
<span class="pl-s1">t1</span>: <span class="pl-s1">time</span>.<span class="pl-en">struct_time</span>(<span class="pl-s1">tm_year</span><span class="pl-c1">=</span><span class="pl-c1">2018</span>, <span class="pl-s1">tm_mon</span><span class="pl-c1">=</span><span class="pl-c1">12</span>, <span class="pl-s1">tm_mday</span><span class="pl-c1">=</span><span class="pl-c1">27</span>, <span class="pl-s1">tm_hour</span><span class="pl-c1">=</span><span class="pl-c1">15</span>, <span class="pl-s1">tm_min</span><span class="pl-c1">=</span><span class="pl-c1">49</span>, <span class="pl-s1">tm_sec</span><span class="pl-c1">=</span><span class="pl-c1">29</span>, <span class="pl-s1">tm_wday</span><span class="pl-c1">=</span><span class="pl-c1">3</span>, <span class="pl-s1">tm_yday</span><span class="pl-c1">=</span><span class="pl-c1">361</span>, <span class="pl-s1">tm_isdst</span><span class="pl-c1">=</span><span class="pl-c1">0</span>) <span class="pl-s1">s</span>: <span class="pl-c1">1545925769.0</span> |
Python time.asctime()
asctime()
函数将struct_time
(或包含 9 个与struct_time
相对应的元素的元组)作为参数,并返回表示它的字符串。 这是一个例子:
1 2 3 4 5 6 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">t</span> <span class="pl-c1">=</span> (<span class="pl-c1">2018</span>, <span class="pl-c1">12</span>, <span class="pl-c1">28</span>, <span class="pl-c1">8</span>, <span class="pl-c1">44</span>, <span class="pl-c1">4</span>, <span class="pl-c1">4</span>, <span class="pl-c1">362</span>, <span class="pl-c1">0</span>) <span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">asctime</span>(<span class="pl-s1">t</span>) <span class="pl-en">print</span>(<span class="pl-s">"Result:"</span>, <span class="pl-s1">result</span>) |
当你运行程序时,输出将是:
1 |
<span class="pl-v">Result</span>: <span class="pl-v">Fri</span> <span class="pl-v">Dec</span> <span class="pl-c1">28</span> <span class="pl-c1">08</span>:<span class="pl-c1">44</span>:<span class="pl-c1">04</span> <span class="pl-c1">2018</span> |
Python time.strftime()
strftime()
函数将struct_time
(或与其对应的元组)作为参数,并根据所使用的格式代码返回表示它的字符串。 例如,
1 2 3 4 5 6 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">named_tuple</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">localtime</span>() <span class="pl-c"># get struct_time</span> <span class="pl-s1">time_string</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">strftime</span>(<span class="pl-s">"%m/%d/%Y, %H:%M:%S"</span>, <span class="pl-s1">named_tuple</span>) <span class="pl-en">print</span>(<span class="pl-s1">time_string</span>) |
当您运行程序时,输出将类似于:
1 |
<span class="pl-c1">12</span><span class="pl-c1">/</span><span class="pl-c1">28</span><span class="pl-c1">/</span><span class="pl-c1">2018</span>, <span class="pl-c1">09</span>:<span class="pl-c1">47</span>:<span class="pl-c1">41</span> |
这里,%Y
,%m
,%d
,%H
等是格式代码。
%Y
– 年0001, ..., 2018, 2019, ..., 9999
%m
– 月01, 02, ..., 11, 12
%d
– 天01, 02, ..., 30, 31
%H
– 小时00, 01, ..., 22, 23
%M
– 分钟00, 01, ..., 58, 59
%S
– 秒00, 01, ..., 58, 59
要了解更多信息,请访问: time.strftime()
。
Python time.strptime()
strptime()
函数解析表示时间的字符串,然后返回struct_time
。
1 2 3 4 5 6 |
<span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">time_string</span> <span class="pl-c1">=</span> <span class="pl-s">"21 June, 2018"</span> <span class="pl-s1">result</span> <span class="pl-c1">=</span> <span class="pl-s1">time</span>.<span class="pl-en">strptime</span>(<span class="pl-s1">time_string</span>, <span class="pl-s">"%d %B, %Y"</span>) <span class="pl-en">print</span>(<span class="pl-s1">result</span>) |
当你运行程序时,输出将是:
1 |
<span class="pl-s1">time</span>.<span class="pl-en">struct_time</span>(<span class="pl-s1">tm_year</span><span class="pl-c1">=</span><span class="pl-c1">2018</span>, <span class="pl-s1">tm_mon</span><span class="pl-c1">=</span><span class="pl-c1">6</span>, <span class="pl-s1">tm_mday</span><span class="pl-c1">=</span><span class="pl-c1">21</span>, <span class="pl-s1">tm_hour</span><span class="pl-c1">=</span><span class="pl-c1">0</span>, <span class="pl-s1">tm_min</span><span class="pl-c1">=</span><span class="pl-c1">0</span>, <span class="pl-s1">tm_sec</span><span class="pl-c1">=</span><span class="pl-c1">0</span>, <span class="pl-s1">tm_wday</span><span class="pl-c1">=</span><span class="pl-c1">3</span>, <span class="pl-s1">tm_yday</span><span class="pl-c1">=</span><span class="pl-c1">172</span>, <span class="pl-s1">tm_isdst</span><span class="pl-c1">=</span><span class="pl-c1">-</span><span class="pl-c1">1</span>) |