在本文中,您将借助示例学习使用 Python 操作日期和时间。
Python 有一个名为datetime
的模块,用于处理日期和时间。 在深入研究之前,让我们创建一些与日期和时间有关的简单程序。

示例 1:获取当前日期和时间
1 2 3 4 |
<span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">datetime_object</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-s1">datetime</span>.<span class="pl-en">now</span>() <span class="pl-en">print</span>(<span class="pl-s1">datetime_object</span>) |
当您运行程序时,输出将类似于:
1 |
<span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">12</span><span class="pl-c1">-</span><span class="pl-c1">19</span> <span class="pl-c1">09</span>:<span class="pl-c1">26</span>:<span class="pl-c1">03.478039</span> |
在这里,我们使用import datetime
语句导入了日期时间模块。
datetime
模块中定义的类别之一是datetime
类别。 然后,我们使用now()
方法创建一个包含当前本地日期和时间的datetime
对象。
示例 2:获取当前日期
1 2 3 4 |
<span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">date_object</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-s1">date</span>.<span class="pl-en">today</span>() <span class="pl-en">print</span>(<span class="pl-s1">date_object</span>) |
当您运行程序时,输出将类似于:
1 |
<span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">12</span><span class="pl-c1">-</span><span class="pl-c1">19</span> |
在此程序中,我们使用了date
类中定义的today()
方法来获取包含当前本地日期的date
对象。
日期时间里面是什么?
我们可以使用dir()
函数来获取包含模块所有属性的列表。
1 2 3 |
<span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-en">print</span>(<span class="pl-en">dir</span>(<span class="pl-s1">datetime</span>)) |
运行该程序时,输出为:
1 |
[<span class="pl-s">'MAXYEAR'</span>, <span class="pl-s">'MINYEAR'</span>, <span class="pl-s">'__builtins__'</span>, <span class="pl-s">'__cached__'</span>, <span class="pl-s">'__doc__'</span>, <span class="pl-s">'__file__'</span>, <span class="pl-s">'__loader__'</span>, <span class="pl-s">'__name__'</span>, <span class="pl-s">'__package__'</span>, <span class="pl-s">'__spec__'</span>, <span class="pl-s">'_divide_and_round'</span>, <span class="pl-s">'date'</span>, <span class="pl-s">'datetime'</span>, <span class="pl-s">'datetime_CAPI'</span>, <span class="pl-s">'time'</span>, <span class="pl-s">'timedelta'</span>, <span class="pl-s">'timezone'</span>, <span class="pl-s">'tzinfo'</span>] |
datetime
模块中常用的类是:
- 日期类
- 时间类
- 日期时间类
- 时间差异类
datetime.date
类
您可以从date
类实例化date
对象。 日期对象代表日期(年,月和日)。
示例 3:代表日期的Date
对象
1 2 3 4 |
<span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">d</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">date</span>(<span class="pl-c1">2019</span>, <span class="pl-c1">4</span>, <span class="pl-c1">13</span>) <span class="pl-en">print</span>(<span class="pl-s1">d</span>) |
当你运行程序时,输出将是:
1 |
<span class="pl-c1">2019</span><span class="pl-c1">-</span><span class="pl-c1">04</span><span class="pl-c1">-</span><span class="pl-c1">13</span> |
如果您想知道,以上示例中的date()
是date
类的构造器。 构造器采用三个参数:年,月和日。
变量d
是date
对象。
我们只能从datetime
模块导入date
类。 这是如何做:
1 2 3 4 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">date</span> <span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-en">date</span>(<span class="pl-c1">2019</span>, <span class="pl-c1">4</span>, <span class="pl-c1">13</span>) <span class="pl-en">print</span>(<span class="pl-s1">a</span>) |
示例 4:获取当前日期
您可以使用名为today()
的类方法来创建包含当前日期的date
对象。 这是如何做:
1 2 3 4 5 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">date</span> <span class="pl-s1">today</span> <span class="pl-c1">=</span> <span class="pl-s1">date</span>.<span class="pl-en">today</span>() <span class="pl-en">print</span>(<span class="pl-s">"Current date ="</span>, <span class="pl-s1">today</span>) |
示例 5:从时间戳获取日期
我们还可以根据时间戳创建date
对象。 Unix 时间戳是 UTC 特定日期到 1970 年 1 月 1 日之间的秒数。 您可以使用fromtimestamp()
方法将时间戳转换为日期。
1 2 3 4 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">date</span> <span class="pl-s1">timestamp</span> <span class="pl-c1">=</span> <span class="pl-s1">date</span>.<span class="pl-en">fromtimestamp</span>(<span class="pl-c1">1326244364</span>) <span class="pl-en">print</span>(<span class="pl-s">"Date ="</span>, <span class="pl-s1">timestamp</span>) |
当你运行程序时,输出将是:
1 |
<span class="pl-v">Date</span> <span class="pl-c1">=</span> <span class="pl-c1">2012</span><span class="pl-c1">-</span><span class="pl-c1">01</span><span class="pl-c1">-</span><span class="pl-c1">11</span> |
示例 6:打印今天的年,月和日
我们可以轻松地从日期对象获取年,月,日,星期几等。 这是如何做:
1 2 3 4 5 6 7 8 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">date</span> <span class="pl-c"># date object of today's date</span> <span class="pl-s1">today</span> <span class="pl-c1">=</span> <span class="pl-s1">date</span>.<span class="pl-en">today</span>() <span class="pl-en">print</span>(<span class="pl-s">"Current year:"</span>, <span class="pl-s1">today</span>.<span class="pl-s1">year</span>) <span class="pl-en">print</span>(<span class="pl-s">"Current month:"</span>, <span class="pl-s1">today</span>.<span class="pl-s1">month</span>) <span class="pl-en">print</span>(<span class="pl-s">"Current day:"</span>, <span class="pl-s1">today</span>.<span class="pl-s1">day</span>) |
datetime.time
从time
类实例化的时间对象表示本地时间。
示例 7:代表时间的时间对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-c"># time(hour = 0, minute = 0, second = 0)</span> <span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-en">time</span>() <span class="pl-en">print</span>(<span class="pl-s">"a ="</span>, <span class="pl-s1">a</span>) <span class="pl-c"># time(hour, minute and second)</span> <span class="pl-s1">b</span> <span class="pl-c1">=</span> <span class="pl-en">time</span>(<span class="pl-c1">11</span>, <span class="pl-c1">34</span>, <span class="pl-c1">56</span>) <span class="pl-en">print</span>(<span class="pl-s">"b ="</span>, <span class="pl-s1">b</span>) <span class="pl-c"># time(hour, minute and second)</span> <span class="pl-s1">c</span> <span class="pl-c1">=</span> <span class="pl-en">time</span>(<span class="pl-s1">hour</span> <span class="pl-c1">=</span> <span class="pl-c1">11</span>, <span class="pl-s1">minute</span> <span class="pl-c1">=</span> <span class="pl-c1">34</span>, <span class="pl-s1">second</span> <span class="pl-c1">=</span> <span class="pl-c1">56</span>) <span class="pl-en">print</span>(<span class="pl-s">"c ="</span>, <span class="pl-s1">c</span>) <span class="pl-c"># time(hour, minute, second, microsecond)</span> <span class="pl-s1">d</span> <span class="pl-c1">=</span> <span class="pl-en">time</span>(<span class="pl-c1">11</span>, <span class="pl-c1">34</span>, <span class="pl-c1">56</span>, <span class="pl-c1">234566</span>) <span class="pl-en">print</span>(<span class="pl-s">"d ="</span>, <span class="pl-s1">d</span>) |
当你运行程序时,输出将是:
1 2 3 4 |
<span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-c1">00</span>:<span class="pl-c1">00</span>:<span class="pl-c1">00</span> <span class="pl-s1">b</span> <span class="pl-c1">=</span> <span class="pl-c1">11</span>:<span class="pl-c1">34</span>:<span class="pl-c1">56</span> <span class="pl-s1">c</span> <span class="pl-c1">=</span> <span class="pl-c1">11</span>:<span class="pl-c1">34</span>:<span class="pl-c1">56</span> <span class="pl-s1">d</span> <span class="pl-c1">=</span> <span class="pl-c1">11</span>:<span class="pl-c1">34</span>:<span class="pl-c1">56.234566</span> |
示例 8:打印小时,分钟,秒和微秒
创建time
对象后,可以轻松打印其属性,例如hour
,minute
等。
1 2 3 4 5 6 7 8 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">time</span> <span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-en">time</span>(<span class="pl-c1">11</span>, <span class="pl-c1">34</span>, <span class="pl-c1">56</span>) <span class="pl-en">print</span>(<span class="pl-s">"hour ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">hour</span>) <span class="pl-en">print</span>(<span class="pl-s">"minute ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">minute</span>) <span class="pl-en">print</span>(<span class="pl-s">"second ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">second</span>) <span class="pl-en">print</span>(<span class="pl-s">"microsecond ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">microsecond</span>) |
当您运行示例时,输出将是:
1 2 3 4 |
<span class="pl-s1">hour</span> <span class="pl-c1">=</span> <span class="pl-c1">11</span> <span class="pl-s1">minute</span> <span class="pl-c1">=</span> <span class="pl-c1">34</span> <span class="pl-s1">second</span> <span class="pl-c1">=</span> <span class="pl-c1">56</span> <span class="pl-s1">microsecond</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span> |
请注意,我们尚未传递microsecond
参数。 因此,将打印其默认值0
。
datetime.datetime
datetime
模块具有一个名为dateclass
的类,可以包含来自日期和时间对象的信息。
示例 9:Python datetime
对象
1 2 3 4 5 6 7 8 9 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-c">#datetime(year, month, day)</span> <span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-en">datetime</span>(<span class="pl-c1">2018</span>, <span class="pl-c1">11</span>, <span class="pl-c1">28</span>) <span class="pl-en">print</span>(<span class="pl-s1">a</span>) <span class="pl-c"># datetime(year, month, day, hour, minute, second, microsecond)</span> <span class="pl-s1">b</span> <span class="pl-c1">=</span> <span class="pl-en">datetime</span>(<span class="pl-c1">2017</span>, <span class="pl-c1">11</span>, <span class="pl-c1">28</span>, <span class="pl-c1">23</span>, <span class="pl-c1">55</span>, <span class="pl-c1">59</span>, <span class="pl-c1">342380</span>) <span class="pl-en">print</span>(<span class="pl-s1">b</span>) |
当你运行程序时,输出将是:
1 2 |
<span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">11</span><span class="pl-c1">-</span><span class="pl-c1">28</span> <span class="pl-c1">00</span>:<span class="pl-c1">00</span>:<span class="pl-c1">00</span> <span class="pl-c1">2017</span><span class="pl-c1">-</span><span class="pl-c1">11</span><span class="pl-c1">-</span><span class="pl-c1">28</span> <span class="pl-c1">23</span>:<span class="pl-c1">55</span>:<span class="pl-c1">59.342380</span> |
datetime()
构造器中的前三个参数year
,month
和day
是必填项。
示例 10:打印年,月,时,分和时间戳
1 2 3 4 5 6 7 8 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">a</span> <span class="pl-c1">=</span> <span class="pl-en">datetime</span>(<span class="pl-c1">2017</span>, <span class="pl-c1">11</span>, <span class="pl-c1">28</span>, <span class="pl-c1">23</span>, <span class="pl-c1">55</span>, <span class="pl-c1">59</span>, <span class="pl-c1">342380</span>) <span class="pl-en">print</span>(<span class="pl-s">"year ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">year</span>) <span class="pl-en">print</span>(<span class="pl-s">"month ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">month</span>) <span class="pl-en">print</span>(<span class="pl-s">"hour ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">hour</span>) <span class="pl-en">print</span>(<span class="pl-s">"minute ="</span>, <span class="pl-s1">a</span>.<span class="pl-s1">minute</span>) <span class="pl-en">print</span>(<span class="pl-s">"timestamp ="</span>, <span class="pl-s1">a</span>.<span class="pl-en">timestamp</span>()) |
当你运行程序时,输出将是:
1 2 3 4 5 6 |
<span class="pl-s1">year</span> <span class="pl-c1">=</span> <span class="pl-c1">2017</span> <span class="pl-s1">month</span> <span class="pl-c1">=</span> <span class="pl-c1">11</span> <span class="pl-s1">day</span> <span class="pl-c1">=</span> <span class="pl-c1">28</span> <span class="pl-s1">hour</span> <span class="pl-c1">=</span> <span class="pl-c1">23</span> <span class="pl-s1">minute</span> <span class="pl-c1">=</span> <span class="pl-c1">55</span> <span class="pl-s1">timestamp</span> <span class="pl-c1">=</span> <span class="pl-c1">1511913359.34238</span> |
datetime.timedelta
timedelta
对象表示两个日期或时间之间的时差。
示例 11:两个日期和时间之间的时差
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span>, <span class="pl-s1">date</span> <span class="pl-s1">t1</span> <span class="pl-c1">=</span> <span class="pl-en">date</span>(<span class="pl-s1">year</span> <span class="pl-c1">=</span> <span class="pl-c1">2018</span>, <span class="pl-s1">month</span> <span class="pl-c1">=</span> <span class="pl-c1">7</span>, <span class="pl-s1">day</span> <span class="pl-c1">=</span> <span class="pl-c1">12</span>) <span class="pl-s1">t2</span> <span class="pl-c1">=</span> <span class="pl-en">date</span>(<span class="pl-s1">year</span> <span class="pl-c1">=</span> <span class="pl-c1">2017</span>, <span class="pl-s1">month</span> <span class="pl-c1">=</span> <span class="pl-c1">12</span>, <span class="pl-s1">day</span> <span class="pl-c1">=</span> <span class="pl-c1">23</span>) <span class="pl-s1">t3</span> <span class="pl-c1">=</span> <span class="pl-s1">t1</span> <span class="pl-c1">-</span> <span class="pl-s1">t2</span> <span class="pl-en">print</span>(<span class="pl-s">"t3 ="</span>, <span class="pl-s1">t3</span>) <span class="pl-s1">t4</span> <span class="pl-c1">=</span> <span class="pl-en">datetime</span>(<span class="pl-s1">year</span> <span class="pl-c1">=</span> <span class="pl-c1">2018</span>, <span class="pl-s1">month</span> <span class="pl-c1">=</span> <span class="pl-c1">7</span>, <span class="pl-s1">day</span> <span class="pl-c1">=</span> <span class="pl-c1">12</span>, <span class="pl-s1">hour</span> <span class="pl-c1">=</span> <span class="pl-c1">7</span>, <span class="pl-s1">minute</span> <span class="pl-c1">=</span> <span class="pl-c1">9</span>, <span class="pl-s1">second</span> <span class="pl-c1">=</span> <span class="pl-c1">33</span>) <span class="pl-s1">t5</span> <span class="pl-c1">=</span> <span class="pl-en">datetime</span>(<span class="pl-s1">year</span> <span class="pl-c1">=</span> <span class="pl-c1">2019</span>, <span class="pl-s1">month</span> <span class="pl-c1">=</span> <span class="pl-c1">6</span>, <span class="pl-s1">day</span> <span class="pl-c1">=</span> <span class="pl-c1">10</span>, <span class="pl-s1">hour</span> <span class="pl-c1">=</span> <span class="pl-c1">5</span>, <span class="pl-s1">minute</span> <span class="pl-c1">=</span> <span class="pl-c1">55</span>, <span class="pl-s1">second</span> <span class="pl-c1">=</span> <span class="pl-c1">13</span>) <span class="pl-s1">t6</span> <span class="pl-c1">=</span> <span class="pl-s1">t4</span> <span class="pl-c1">-</span> <span class="pl-s1">t5</span> <span class="pl-en">print</span>(<span class="pl-s">"t6 ="</span>, <span class="pl-s1">t6</span>) <span class="pl-en">print</span>(<span class="pl-s">"type of t3 ="</span>, <span class="pl-en">type</span>(<span class="pl-s1">t3</span>)) <span class="pl-en">print</span>(<span class="pl-s">"type of t6 ="</span>, <span class="pl-en">type</span>(<span class="pl-s1">t6</span>)) |
当你运行程序时,输出将是:
1 2 3 4 |
<span class="pl-s1">t3</span> <span class="pl-c1">=</span> <span class="pl-c1">201</span> <span class="pl-s1">days</span>, <span class="pl-c1">0</span>:<span class="pl-c1">00</span>:<span class="pl-c1">00</span> <span class="pl-s1">t6</span> <span class="pl-c1">=</span> <span class="pl-c1">-</span><span class="pl-c1">333</span> <span class="pl-s1">days</span>, <span class="pl-c1">1</span>:<span class="pl-c1">14</span>:<span class="pl-c1">20</span> <span class="pl-s1">type</span> <span class="pl-s1">of</span> <span class="pl-s1">t3</span> <span class="pl-c1">=</span><span class="pl-s1"></span> <span class="pl-c1"><</span><span class="pl-s1">class</span> <span class="pl-s">'datetime.timedelta'</span><span class="pl-c1">></span> <span class="pl-s1">type</span> <span class="pl-s1">of</span> <span class="pl-s1">t6</span> <span class="pl-c1">=</span> <span class="pl-c1"><</span><span class="pl-s1">class</span> <span class="pl-s">'datetime.timedelta'</span><span class="pl-c1">></span> |
注意,t3
和t6
均为<class 'datetime.timedelta'>
类型。
示例 12:两个timedelta
对象之间的差异
1 2 3 4 5 6 7 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">timedelta</span> <span class="pl-s1">t1</span> <span class="pl-c1">=</span> <span class="pl-en">timedelta</span>(<span class="pl-s1">weeks</span> <span class="pl-c1">=</span> <span class="pl-c1">2</span>, <span class="pl-s1">days</span> <span class="pl-c1">=</span> <span class="pl-c1">5</span>, <span class="pl-s1">hours</span> <span class="pl-c1">=</span> <span class="pl-c1">1</span>, <span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">33</span>) <span class="pl-s1">t2</span> <span class="pl-c1">=</span> <span class="pl-en">timedelta</span>(<span class="pl-s1">days</span> <span class="pl-c1">=</span> <span class="pl-c1">4</span>, <span class="pl-s1">hours</span> <span class="pl-c1">=</span> <span class="pl-c1">11</span>, <span class="pl-s1">minutes</span> <span class="pl-c1">=</span> <span class="pl-c1">4</span>, <span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">54</span>) <span class="pl-s1">t3</span> <span class="pl-c1">=</span> <span class="pl-s1">t1</span> <span class="pl-c1">-</span> <span class="pl-s1">t2</span> <span class="pl-en">print</span>(<span class="pl-s">"t3 ="</span>, <span class="pl-s1">t3</span>) |
当你运行程序时,输出将是:
1 |
<span class="pl-s1">t3</span> <span class="pl-c1">=</span> <span class="pl-c1">14</span> <span class="pl-s1">days</span>, <span class="pl-c1">13</span>:<span class="pl-c1">55</span>:<span class="pl-c1">39</span> |
在这里,我们创建了两个timedelta
对象t1
和t2
,它们的区别被打印在屏幕上。
示例 13:打印负timedelta
对象
1 2 3 4 5 6 7 8 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">timedelta</span> <span class="pl-s1">t1</span> <span class="pl-c1">=</span> <span class="pl-en">timedelta</span>(<span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">33</span>) <span class="pl-s1">t2</span> <span class="pl-c1">=</span> <span class="pl-en">timedelta</span>(<span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">54</span>) <span class="pl-s1">t3</span> <span class="pl-c1">=</span> <span class="pl-s1">t1</span> <span class="pl-c1">-</span> <span class="pl-s1">t2</span> <span class="pl-en">print</span>(<span class="pl-s">"t3 ="</span>, <span class="pl-s1">t3</span>) <span class="pl-en">print</span>(<span class="pl-s">"t3 ="</span>, <span class="pl-en">abs</span>(<span class="pl-s1">t3</span>)) |
当你运行程序时,输出将是:
1 2 |
<span class="pl-s1">t3</span> <span class="pl-c1">=</span> <span class="pl-c1">-</span><span class="pl-c1">1</span> <span class="pl-s1">day</span>, <span class="pl-c1">23</span>:<span class="pl-c1">59</span>:<span class="pl-c1">39</span> <span class="pl-s1">t3</span> <span class="pl-c1">=</span> <span class="pl-c1">0</span>:<span class="pl-c1">00</span>:<span class="pl-c1">21</span> |
示例 14:持续时间(以秒为单位)
您可以使用total_seconds()
方法获得timedelta
对象中的总秒数。
1 2 3 4 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">timedelta</span> <span class="pl-s1">t</span> <span class="pl-c1">=</span> <span class="pl-en">timedelta</span>(<span class="pl-s1">days</span> <span class="pl-c1">=</span> <span class="pl-c1">5</span>, <span class="pl-s1">hours</span> <span class="pl-c1">=</span> <span class="pl-c1">1</span>, <span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">33</span>, <span class="pl-s1">microseconds</span> <span class="pl-c1">=</span> <span class="pl-c1">233423</span>) <span class="pl-en">print</span>(<span class="pl-s">"total seconds ="</span>, <span class="pl-s1">t</span>.<span class="pl-en">total_seconds</span>()) |
当你运行程序时,输出将是:
1 |
<span class="pl-s1">total</span> <span class="pl-s1">seconds</span> <span class="pl-c1">=</span> <span class="pl-c1">435633.233423</span> |
您还可以使用+
运算符找到两个日期和时间的总和。 另外,您可以将timedelta
对象乘以整数和浮点数。
Python 格式的日期时间
日期和时间的表示方式在不同的地方,组织等中可能有所不同。在美国,使用mm/dd/yyyy
更为常见,而在英国,dd/mm/yyyy
更为常见。
Python 有strftime()
和strptime()
方法来处理。
Python strftime()
– 日期时间字符串对象
strftime()
方法在类date
,datetime
和time
下定义。 该方法从给定的date
,datetime
或time
对象创建格式化的字符串。
示例 15:使用strftime()
格式化日期
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-c"># current date and time</span> <span class="pl-s1">now</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">now</span>() <span class="pl-s1">t</span> <span class="pl-c1">=</span> <span class="pl-s1">now</span>.<span class="pl-en">strftime</span>(<span class="pl-s">"%H:%M:%S"</span>) <span class="pl-en">print</span>(<span class="pl-s">"time:"</span>, <span class="pl-s1">t</span>) <span class="pl-s1">s1</span> <span class="pl-c1">=</span> <span class="pl-s1">now</span>.<span class="pl-en">strftime</span>(<span class="pl-s">"%m/%d/%Y, %H:%M:%S"</span>) <span class="pl-c"># mm/dd/YY H:M:S format</span> <span class="pl-en">print</span>(<span class="pl-s">"s1:"</span>, <span class="pl-s1">s1</span>) <span class="pl-s1">s2</span> <span class="pl-c1">=</span> <span class="pl-s1">now</span>.<span class="pl-en">strftime</span>(<span class="pl-s">"%d/%m/%Y, %H:%M:%S"</span>) <span class="pl-c"># dd/mm/YY H:M:S format</span> <span class="pl-en">print</span>(<span class="pl-s">"s2:"</span>, <span class="pl-s1">s2</span>) |
当您运行程序时,输出将类似于:
1 2 3 |
<span class="pl-s1">time</span>: <span class="pl-c1">04</span>:<span class="pl-c1">34</span>:<span class="pl-c1">52</span> <span class="pl-s1">s1</span>: <span class="pl-c1">12</span><span class="pl-c1">/</span><span class="pl-c1">26</span><span class="pl-c1">/</span><span class="pl-c1">2018</span>, <span class="pl-c1">04</span>:<span class="pl-c1">34</span>:<span class="pl-c1">52</span> <span class="pl-s1">s2</span>: <span class="pl-c1">26</span><span class="pl-c1">/</span><span class="pl-c1">12</span><span class="pl-c1">/</span><span class="pl-c1">2018</span>, <span class="pl-c1">04</span>:<span class="pl-c1">34</span>:<span class="pl-c1">52</span> |
这里,%Y
,%m
,%d
,%H
等是格式代码。strftime()
方法采用一个或多个格式代码,并根据该代码返回格式化的字符串。
在上述程序中,t
,s1
和s2
是字符串。
%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
要了解有关strftime()
和格式代码的更多信息,请访问: Python strftime()
。
Python strptime()
– 日期时间的字符串
strptime()
方法根据给定的字符串(代表日期和时间)创建datetime
对象。
示例 16:strptime()
1 2 3 4 5 6 7 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-s1">date_string</span> <span class="pl-c1">=</span> <span class="pl-s">"21 June, 2018"</span> <span class="pl-en">print</span>(<span class="pl-s">"date_string ="</span>, <span class="pl-s1">date_string</span>) <span class="pl-s1">date_object</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">strptime</span>(<span class="pl-s1">date_string</span>, <span class="pl-s">"%d %B, %Y"</span>) <span class="pl-en">print</span>(<span class="pl-s">"date_object ="</span>, <span class="pl-s1">date_object</span>) |
当你运行程序时,输出将是:
1 2 |
<span class="pl-s1">date_string</span> <span class="pl-c1">=</span> <span class="pl-c1">21</span> <span class="pl-v">June</span>, <span class="pl-c1">2018</span> <span class="pl-s1">date_object</span> <span class="pl-c1">=</span> <span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">06</span><span class="pl-c1">-</span><span class="pl-c1">21</span> <span class="pl-c1">00</span>:<span class="pl-c1">00</span>:<span class="pl-c1">00</span> |
strptime()
方法采用两个参数:
- 代表日期和时间的字符串
- 等同于第一个参数的格式代码
顺便说一下,%d
,%B
和%Y
格式代码分别用于day
,month
(全名)和year
。
访问 Python strptime()
了解更多信息。
使用 Python 处理时区
假设您正在一个项目上,需要根据其时区显示日期和时间。 建议您使用第三方pytz
模块,不要自己处理时区。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<span class="pl-k">from</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">datetime</span> <span class="pl-k">import</span> <span class="pl-s1">pytz</span> <span class="pl-s1">local</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">now</span>() <span class="pl-en">print</span>(<span class="pl-s">"Local:"</span>, <span class="pl-s1">local</span>.<span class="pl-en">strftime</span>(<span class="pl-s">"%m/%d/%Y, %H:%M:%S"</span>)) <span class="pl-s1">tz_NY</span> <span class="pl-c1">=</span> <span class="pl-s1">pytz</span>.<span class="pl-en">timezone</span>(<span class="pl-s">'America/New_York'</span>) <span class="pl-s1">datetime_NY</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">now</span>(<span class="pl-s1">tz_NY</span>) <span class="pl-en">print</span>(<span class="pl-s">"NY:"</span>, <span class="pl-s1">datetime_NY</span>.<span class="pl-en">strftime</span>(<span class="pl-s">"%m/%d/%Y, %H:%M:%S"</span>)) <span class="pl-s1">tz_London</span> <span class="pl-c1">=</span> <span class="pl-s1">pytz</span>.<span class="pl-en">timezone</span>(<span class="pl-s">'Europe/London'</span>) <span class="pl-s1">datetime_London</span> <span class="pl-c1">=</span> <span class="pl-s1">datetime</span>.<span class="pl-en">now</span>(<span class="pl-s1">tz_London</span>) <span class="pl-en">print</span>(<span class="pl-s">"London:"</span>, <span class="pl-s1">datetime_London</span>.<span class="pl-en">strftime</span>(<span class="pl-s">"%m/%d/%Y, %H:%M:%S"</span>)) |
当您运行程序时,输出将类似于:
1 2 3 |
<span class="pl-v">Local</span> <span class="pl-s1">time</span>: <span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">12</span><span class="pl-c1">-</span><span class="pl-c1">20</span> <span class="pl-c1">13</span>:<span class="pl-c1">10</span>:<span class="pl-c1">44.260462</span> <span class="pl-v">America</span><span class="pl-c1">/</span><span class="pl-v">New_York</span> <span class="pl-s1">time</span>: <span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">12</span><span class="pl-c1">-</span><span class="pl-c1">20</span> <span class="pl-c1">13</span>:<span class="pl-c1">10</span>:<span class="pl-c1">44.260462</span> <span class="pl-v">Europe</span><span class="pl-c1">/</span><span class="pl-v">London</span> <span class="pl-s1">time</span>: <span class="pl-c1">2018</span><span class="pl-c1">-</span><span class="pl-c1">12</span><span class="pl-c1">-</span><span class="pl-c1">20</span> <span class="pl-c1">13</span>:<span class="pl-c1">10</span>:<span class="pl-c1">44.260462</span> |
在这里,datetime_NY
和datetime_London
是包含其各自时区的当前日期和时间的datetime
对象。