哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮
有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。
文章目录
前言
在开发中经常会遇到查询日期、时间、时间戳,或者日期比较等相关操作,为了方便以后使用,本文将对python操作时间的各种操作做出总结。
作者:有勇气的牛排
时间戳: 即以整型或浮点型表示的是一个以秒为单位的时间间隔。这个时间的基础值是从1970年的1月1号零点开始算起。
1 datetime 模块
此模块常用类有:date、time、datetime、timedelta
导入
from datetime import *
1.1 date类
获取当前日期
from datetime import *
dt = date.today()
print(dt)
print(dt.year)
print(dt.month)
print(dt.day)
print(dt.weekday())
print(dt.isoweekday())
print(dt.ctime())
print(dt.replace(year=2023))
print(dt.max)
print(dt.min)
使用date类的构造函数,初始化变量
d = date(2022, 9, 6)
print(d)
字符串初始化为date
d = date.fromisoformat("2022-09-06")
print(d)
print(type(d))
时间戳 转 date对象
d = date.fromtimestamp(1662451516)
print(d)
date 转 字符串
d = date.today()
str_date = d.isoformat()
print(str_date)
1.2 time类
from datetime import time
t1 = time(10, 20, 32)
print(t1)
print(t1.hour)
print(t1.minute)
print(t1.second)
res = time.isoformat(t1)
print(res)
print(type(res))
1.3 datetime类
from datetime import datetime
t = datetime(2022, 9, 7, 20, 32, 20)
print(t)
print(t.year)
print(t.month)
print(t.day)
print(t.hour)
print(t.minute)
print(t.second)
today = datetime.now()
print(today)
d = datetime.fromisoformat("2022-09-10 12:25:36")
print(type(d))
1.4 timedelta类
主要用于计算日期差异,或者日期相关操作
1.4.1 时间增加
from datetime import datetime, timedelta
now = datetime.now()
print(now)
new_time = now + timedelta(days=2)
print(new_time.strftime("%Y-%m-%d %H:%M:%S"))
new_time = now + timedelta(weeks=1)
print(new_time.strftime("%Y-%m-%d %H:%M:%S"))
1.4.2 计算时间差
from datetime import datetime, date
now = datetime.now()
d = datetime.fromisoformat("2022-09-10 12:25:36")
res = d - now
print(res)
print(res.days)
print(res.seconds)

1.5 datetime格式化
from datetime import datetime, date
now = datetime.now()
print(now)
print(now.strftime("%Y-%m-%d %H:%M:%S"))
print(now.strftime("%y-%m-%d %H:%M:%S %A"))

符号 |
描述 |
%y |
两位数的年份表示(00-99) |
%Y |
四位数的年份表示(0000-9999) |
%m |
月份(01-12) |
%d |
月内的天(0-31) |
%H |
24h值小时数(0-23) |
%I |
12小时小时数 |
%M |
分钟数(00-59) |
%S |
秒(00-59) |
%a |
本地简化星期名称 |
%A |
本地完整星期名称 |
%b |
本地简化月份名称 |
%B |
本地完整月份名称 |
%c |
本地相应的日期表示和时间表示 |
%j |
年内的一天(001-366) |
%p |
本地A.M.或P.M.的等价符 |
%U |
一年中的星期数(00-53)星期天为星期的开始 |
%w |
星期(0-6),星期天为星期的开始 |
%W |
一年中的星期数(0-53)星期一位星期的开始 |
%x |
本地相应的日期表示 |
%X |
本地相应的事假表示 |
%Z |
当前时区的名称 |
%% |
%号本身 |
2 time 标准库
元组表示法:以Python的数据结构表示,共有9个。
属性 |
描述 |
tm_year |
年 |
tm_mon |
月(1-12) |
tm_mday |
日(1-31) |
tm_hour |
时(0-23) |
tm_min |
分(0-59) |
tm_sec |
秒(0-59) |
tm_wday |
0-6(0表示周日) |
tm_yday |
1-366(一年中的第几天) |
tm_isdst |
默认为-1(是否为夏令时) |
2.1 时间操作
import time
timestamp = time.time()
print(timestamp)
time_tuple1 = time.localtime()
time_tuple2 = time.localtime(timestamp)
print(time_tuple1)
print(time_tuple2)
timestamp2 = time.mktime(time_tuple1)
print(timestamp2)
strftime1 = time.strftime("%Y-%m-%d %H:%M:%S", time_tuple1)
print(strftime1)
time_tuple3 = time.strptime("2022-09-10 16:14:18", "%Y-%m-%d %H:%M:%S")
print(time_tuple3)
print(time.ctime())
print(time.ctime(time.time()))
print(time.asctime())
print(time.asctime(time.localtime()))
2.2 程序睡眠
程序睡眠
time.sleep(3)
3 Calendar 日历模块
打印日历
import calendar
cal = calendar.month(2022,9)
print(cal)
"""
September 2022
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
"""
闰年相关
import calendar
print(calendar.isleap(2000))
print(calendar.isleap(2022))
print(calendar.leapdays(2008, 2060))
4 dateuil 日期模块
安装
pip install dateutils
from datetime import datetime, date
from dateutil.relativedelta import relativedelta, MO, TU, WE, TH, FR, SA, SU
now = datetime.now()
today = date.today()
print(now)
print(today)
"""
时间增加
dt1=None, dt2=None,
years=0, months=0, days=0, leapdays=0, weeks=0,
hours=0, minutes=0, seconds=0, microseconds=0,
year=None, month=None, day=None, weekday=None,
yearday=None, nlyearday=None,
hour=None, minute=None, second=None, microsecond=None
"""
next_month = now + relativedelta(months=1)
print(next_month)
next_year_prev_month = now + relativedelta(years=1, months=-1)
print(next_year_prev_month)
next_fr = now + relativedelta(weekday=FR)
print(next_fr)
res = relativedelta(date(2060, 6, 20), today)
print(res)
print(res.years)
5 案例讲解
5.1 列表时间排序
import datetime
def get_timestamp(date):
return datetime.datetime.strptime(date, "%Y-%m-%d").timestamp()
time_list = ["2023-06-01", "2022-10-25", "2022-11-25", "2021-10-03"]
time_list = sorted(time_list, key=lambda date: get_timestamp(date))
print(time_list)

<p><font face="楷体,华文行楷,隶书,黑体" color="red" size="4"><strong>哈喽,大家好,我是有勇气的牛排(全网同名)🐮🐮🐮</strong></font></p>
<p><font face="楷体,华文行楷,隶书,黑体" color="blue" size="4"><strong>有问题的小伙伴欢迎在文末评论,点赞、收藏是对我最大的支持!!!。</strong></font></p>
<p><h3>文章目录</h3><ul><ul><li><a href="#_6">前言</a></li><li><a href="#1_datetime__12">1 datetime 模块</a></li><ul><li><a href="#11_date_21">1.1 date类</a></li><li><a href="#12_time_72">1.2 time类</a></li><li><a href="#13_datetime_91">1.3 datetime类</a></li><li><a href="#14_timedelta_117">1.4 timedelta类</a></li><ul><li><a href="#141__120">1.4.1 时间增加</a></li><li><a href="#142__136">1.4.2 计算时间差</a></li></ul><li><a href="#15_datetime_152">1.5 datetime格式化</a></li></ul><li><a href="#2_time__189">2 time 标准库</a></li><ul><li><a href="#21__204">2.1 时间操作</a></li><li><a href="#22__239">2.2 程序睡眠</a></li></ul><li><a href="#3_Calendar__246">3 Calendar 日历模块</a></li><li><a href="#4_dateuil__274">4 dateuil 日期模块</a></li><li><a href="#5__316">5 案例讲解</a></li><ul><li><a href="#51__317">5.1 列表时间排序</a></li></ul></ul></ul></p>
<h2><a id="_6"></a>前言</h2>
<p>在开发中经常会遇到查询日期、时间、时间戳,或者日期比较等相关操作,为了方便以后使用,本文将对python操作时间的各种操作做出总结。<br />
作者:有勇气的牛排</p>
<p>时间戳: 即以整型或浮点型表示的是一个以秒为单位的时间间隔。这个时间的基础值是从1970年的1月1号零点开始算起。</p>
<h2><a id="1_datetime__12"></a>1 datetime 模块</h2>
<p>此模块常用类有:date、time、datetime、timedelta</p>
<p>导入</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> *
</code></div></pre>
<h3><a id="11_date_21"></a>1.1 date类</h3>
<p>获取当前日期</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> *
dt = date.today()
<span class="hljs-built_in">print</span>(dt) <span class="hljs-comment"># 输出:2022-09-07</span>
<span class="hljs-built_in">print</span>(dt.year) <span class="hljs-comment"># 2022</span>
<span class="hljs-built_in">print</span>(dt.month)
<span class="hljs-built_in">print</span>(dt.day)
<span class="hljs-comment"># 返回星期几 星期一 = 0</span>
<span class="hljs-built_in">print</span>(dt.weekday()) <span class="hljs-comment"># 输出:2</span>
<span class="hljs-comment"># 返回星期几 星期一 = 1</span>
<span class="hljs-built_in">print</span>(dt.isoweekday()) <span class="hljs-comment"># 0001-01-01</span>
<span class="hljs-comment"># 返回 ctime() 样式字符串</span>
<span class="hljs-built_in">print</span>(dt.ctime()) <span class="hljs-comment"># Wed Sep 7 00:00:00 2022</span>
<span class="hljs-comment"># 修改 年、月、日</span>
<span class="hljs-built_in">print</span>(dt.replace(year=<span class="hljs-number">2023</span>)) <span class="hljs-comment"># 输出:2023-09-07</span>
<span class="hljs-comment"># 打印最大/最小日期</span>
<span class="hljs-built_in">print</span>(dt.<span class="hljs-built_in">max</span>) <span class="hljs-comment"># 9999-12-31</span>
<span class="hljs-built_in">print</span>(dt.<span class="hljs-built_in">min</span>) <span class="hljs-comment"># 0001-01-01</span>
</code></div></pre>
<p>使用date类的构造函数,初始化变量</p>
<pre><div class="hljs"><code class="lang-python">d = date(<span class="hljs-number">2022</span>, <span class="hljs-number">9</span>, <span class="hljs-number">6</span>)
<span class="hljs-built_in">print</span>(d) <span class="hljs-comment"># 输出:2022-09-06</span>
</code></div></pre>
<p>字符串初始化为date</p>
<pre><div class="hljs"><code class="lang-python">d = date.fromisoformat(<span class="hljs-string">"2022-09-06"</span>)
<span class="hljs-built_in">print</span>(d) <span class="hljs-comment"># 2022-09-06</span>
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(d)) <span class="hljs-comment"># <class 'datetime.date'></span>
</code></div></pre>
<p>时间戳 转 date对象</p>
<pre><div class="hljs"><code class="lang-python">d = date.fromtimestamp(<span class="hljs-number">1662451516</span>)
<span class="hljs-built_in">print</span>(d) <span class="hljs-comment"># 2022-09-06</span>
</code></div></pre>
<p>date 转 字符串</p>
<pre><div class="hljs"><code class="lang-python">d = date.today()
str_date = d.isoformat()
<span class="hljs-built_in">print</span>(str_date) <span class="hljs-comment"># 2022-09-06 字符串</span>
</code></div></pre>
<h3><a id="12_time_72"></a>1.2 time类</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> time
t1 = time(<span class="hljs-number">10</span>, <span class="hljs-number">20</span>, <span class="hljs-number">32</span>)
<span class="hljs-built_in">print</span>(t1) <span class="hljs-comment"># 输出:10:20:32</span>
<span class="hljs-comment"># 打印时分秒</span>
<span class="hljs-built_in">print</span>(t1.hour)
<span class="hljs-built_in">print</span>(t1.minute)
<span class="hljs-built_in">print</span>(t1.second)
<span class="hljs-comment"># 将对象转为字符串</span>
res = time.isoformat(t1)
<span class="hljs-comment"># print(t1.isoformat()) # 方式2</span>
<span class="hljs-built_in">print</span>(res) <span class="hljs-comment"># 输出:10:20:32</span>
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(res)) <span class="hljs-comment"># 输出:<class 'str'></span>
</code></div></pre>
<h3><a id="13_datetime_91"></a>1.3 datetime类</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime
<span class="hljs-comment"># datetime(year, month, day[, hour[, minute[, second[, microsecond[,tzinfo]]]]])</span>
t = datetime(<span class="hljs-number">2022</span>, <span class="hljs-number">9</span>, <span class="hljs-number">7</span>, <span class="hljs-number">20</span>, <span class="hljs-number">32</span>, <span class="hljs-number">20</span>)
<span class="hljs-built_in">print</span>(t)
<span class="hljs-comment"># 打印 年月日 时分秒</span>
<span class="hljs-built_in">print</span>(t.year)
<span class="hljs-built_in">print</span>(t.month)
<span class="hljs-built_in">print</span>(t.day)
<span class="hljs-built_in">print</span>(t.hour)
<span class="hljs-built_in">print</span>(t.minute)
<span class="hljs-built_in">print</span>(t.second)
<span class="hljs-comment"># 获取当前时间</span>
today = datetime.now()
<span class="hljs-built_in">print</span>(today)
<span class="hljs-comment"># 字符串转为datetime</span>
d = datetime.fromisoformat(<span class="hljs-string">"2022-09-10 12:25:36"</span>)
<span class="hljs-built_in">print</span>(<span class="hljs-built_in">type</span>(d)) <span class="hljs-comment"># <class 'datetime.datetime'></span>
</code></div></pre>
<h3><a id="14_timedelta_117"></a>1.4 timedelta类</h3>
<p>主要用于计算日期差异,或者日期相关操作</p>
<h4><a id="141__120"></a>1.4.1 时间增加</h4>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime, timedelta
now = datetime.now()
<span class="hljs-built_in">print</span>(now)
<span class="hljs-comment"># 加2天</span>
<span class="hljs-comment"># def __new__(cls, days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)</span>
new_time = now + timedelta(days=<span class="hljs-number">2</span>)
<span class="hljs-built_in">print</span>(new_time.strftime(<span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span>))
<span class="hljs-comment"># 加1周</span>
new_time = now + timedelta(weeks=<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(new_time.strftime(<span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span>))
</code></div></pre>
<h4><a id="142__136"></a>1.4.2 计算时间差</h4>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime, date
<span class="hljs-comment"># 计算时间差</span>
now = datetime.now()
<span class="hljs-comment"># 将字符串转为<class 'datetime.datetime'></span>
d = datetime.fromisoformat(<span class="hljs-string">"2022-09-10 12:25:36"</span>)
res = d - now
<span class="hljs-built_in">print</span>(res)
<span class="hljs-built_in">print</span>(res.days)
<span class="hljs-built_in">print</span>(res.seconds)
</code></div></pre>
<p><img src="https://img-blog.csdnimg.cn/8ace677cdf1247259c9c0de8d22291b2.png" alt="在这里插入图片描述" /></p>
<h3><a id="15_datetime_152"></a>1.5 datetime格式化</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime, date
now = datetime.now()
<span class="hljs-built_in">print</span>(now)
<span class="hljs-built_in">print</span>(now.strftime(<span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span>))
<span class="hljs-built_in">print</span>(now.strftime(<span class="hljs-string">"%y-%m-%d %H:%M:%S %A"</span>))
</code></div></pre>
<p><img src="https://img-blog.csdnimg.cn/81ebaa3c6bea49e7be3360c9f757fda9.png" alt="在这里插入图片描述" /></p>
<table>
<thead>
<tr>
<th>符号</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>%y</td>
<td>两位数的年份表示(00-99)</td>
</tr>
<tr>
<td>%Y</td>
<td>四位数的年份表示(0000-9999)</td>
</tr>
<tr>
<td>%m</td>
<td>月份(01-12)</td>
</tr>
<tr>
<td>%d</td>
<td>月内的天(0-31)</td>
</tr>
<tr>
<td>%H</td>
<td>24h值小时数(0-23)</td>
</tr>
<tr>
<td>%I</td>
<td>12小时小时数</td>
</tr>
<tr>
<td>%M</td>
<td>分钟数(00-59)</td>
</tr>
<tr>
<td>%S</td>
<td>秒(00-59)</td>
</tr>
<tr>
<td>%a</td>
<td>本地简化星期名称</td>
</tr>
<tr>
<td>%A</td>
<td>本地完整星期名称</td>
</tr>
<tr>
<td>%b</td>
<td>本地简化月份名称</td>
</tr>
<tr>
<td>%B</td>
<td>本地完整月份名称</td>
</tr>
<tr>
<td>%c</td>
<td>本地相应的日期表示和时间表示</td>
</tr>
<tr>
<td>%j</td>
<td>年内的一天(001-366)</td>
</tr>
<tr>
<td>%p</td>
<td>本地A.M.或P.M.的等价符</td>
</tr>
<tr>
<td>%U</td>
<td>一年中的星期数(00-53)星期天为星期的开始</td>
</tr>
<tr>
<td>%w</td>
<td>星期(0-6),星期天为星期的开始</td>
</tr>
<tr>
<td>%W</td>
<td>一年中的星期数(0-53)星期一位星期的开始</td>
</tr>
<tr>
<td>%x</td>
<td>本地相应的日期表示</td>
</tr>
<tr>
<td>%X</td>
<td>本地相应的事假表示</td>
</tr>
<tr>
<td>%Z</td>
<td>当前时区的名称</td>
</tr>
<tr>
<td>%%</td>
<td>%号本身</td>
</tr>
</tbody>
</table>
<h2><a id="2_time__189"></a>2 time 标准库</h2>
<p>元组表示法:以Python的数据结构表示,共有9个。</p>
<table>
<thead>
<tr>
<th>属性</th>
<th>描述</th>
</tr>
</thead>
<tbody>
<tr>
<td>tm_year</td>
<td>年</td>
</tr>
<tr>
<td>tm_mon</td>
<td>月(1-12)</td>
</tr>
<tr>
<td>tm_mday</td>
<td>日(1-31)</td>
</tr>
<tr>
<td>tm_hour</td>
<td>时(0-23)</td>
</tr>
<tr>
<td>tm_min</td>
<td>分(0-59)</td>
</tr>
<tr>
<td>tm_sec</td>
<td>秒(0-59)</td>
</tr>
<tr>
<td>tm_wday</td>
<td>0-6(0表示周日)</td>
</tr>
<tr>
<td>tm_yday</td>
<td>1-366(一年中的第几天)</td>
</tr>
<tr>
<td>tm_isdst</td>
<td>默认为-1(是否为夏令时)</td>
</tr>
</tbody>
</table>
<h3><a id="21__204"></a>2.1 时间操作</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">import</span> time
<span class="hljs-comment"># 当前timestamp</span>
timestamp = time.time()
<span class="hljs-built_in">print</span>(timestamp)
<span class="hljs-comment"># 时间戳 转 时间元组</span>
<span class="hljs-comment"># 方式1:time.struct_time(tm_year=2022, tm_mon=9, tm_mday=10, tm_hour=16, tm_min=11, tm_sec=30, tm_wday=3, tm_yday=251, tm_isdst=0)</span>
time_tuple1 = time.localtime()
<span class="hljs-comment"># 方式2</span>
time_tuple2 = time.localtime(timestamp)
<span class="hljs-built_in">print</span>(time_tuple1)
<span class="hljs-built_in">print</span>(time_tuple2)
<span class="hljs-comment"># 时间元组 转 时间戳</span>
timestamp2 = time.mktime(time_tuple1)
<span class="hljs-built_in">print</span>(timestamp2) <span class="hljs-comment"># 1662624690.0</span>
<span class="hljs-comment"># 时间元组 格式化为 时间</span>
strftime1 = time.strftime(<span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span>, time_tuple1)
<span class="hljs-built_in">print</span>(strftime1)
<span class="hljs-comment"># 时间 格式化为 时间元组</span>
time_tuple3 = time.strptime(<span class="hljs-string">"2022-09-10 16:14:18"</span>, <span class="hljs-string">"%Y-%m-%d %H:%M:%S"</span>)
<span class="hljs-built_in">print</span>(time_tuple3)
<span class="hljs-comment"># 返回一个可读的时间字符串</span>
<span class="hljs-built_in">print</span>(time.ctime()) <span class="hljs-comment"># Thu Sep 10 16:17:40 2022</span>
<span class="hljs-built_in">print</span>(time.ctime(time.time())) <span class="hljs-comment"># Thu Sep 10 16:17:40 2022</span>
<span class="hljs-built_in">print</span>(time.asctime())
<span class="hljs-built_in">print</span>(time.asctime(time.localtime()))
</code></div></pre>
<h3><a id="22__239"></a>2.2 程序睡眠</h3>
<p>程序睡眠</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-comment"># 程序暂停/睡眠3s</span>
time.sleep(<span class="hljs-number">3</span>)
</code></div></pre>
<h2><a id="3_Calendar__246"></a>3 Calendar 日历模块</h2>
<p>打印日历</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">import</span> calendar
cal = calendar.month(<span class="hljs-number">2022</span>,<span class="hljs-number">9</span>)
<span class="hljs-built_in">print</span>(cal) <span class="hljs-comment"># str</span>
<span class="hljs-string">"""
September 2022
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
"""</span>
</code></div></pre>
<p>闰年相关</p>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">import</span> calendar
<span class="hljs-comment"># 判断是否为闰年</span>
<span class="hljs-built_in">print</span>(calendar.isleap(<span class="hljs-number">2000</span>)) <span class="hljs-comment"># True</span>
<span class="hljs-built_in">print</span>(calendar.isleap(<span class="hljs-number">2022</span>)) <span class="hljs-comment"># False</span>
<span class="hljs-comment"># 查看2个年份之间的闰年总和</span>
<span class="hljs-built_in">print</span>(calendar.leapdays(<span class="hljs-number">2008</span>, <span class="hljs-number">2060</span>)) <span class="hljs-comment"># 13</span>
</code></div></pre>
<h2><a id="4_dateuil__274"></a>4 dateuil 日期模块</h2>
<p>安装</p>
<pre><div class="hljs"><code class="lang-shell">pip install dateutils
</code></div></pre>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">from</span> datetime <span class="hljs-keyword">import</span> datetime, date
<span class="hljs-keyword">from</span> dateutil.relativedelta <span class="hljs-keyword">import</span> relativedelta, MO, TU, WE, TH, FR, SA, SU
now = datetime.now()
today = date.today()
<span class="hljs-built_in">print</span>(now)
<span class="hljs-built_in">print</span>(today)
<span class="hljs-string">"""
时间增加
dt1=None, dt2=None,
years=0, months=0, days=0, leapdays=0, weeks=0,
hours=0, minutes=0, seconds=0, microseconds=0,
year=None, month=None, day=None, weekday=None,
yearday=None, nlyearday=None,
hour=None, minute=None, second=None, microsecond=None
"""</span>
<span class="hljs-comment"># 下个月</span>
next_month = now + relativedelta(months=<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(next_month)
<span class="hljs-comment"># 一年后 前一个月</span>
next_year_prev_month = now + relativedelta(years=<span class="hljs-number">1</span>, months=-<span class="hljs-number">1</span>)
<span class="hljs-built_in">print</span>(next_year_prev_month)
<span class="hljs-comment"># 下周五(前提是今天为周六、周天)</span>
next_fr = now + relativedelta(weekday=FR)
<span class="hljs-built_in">print</span>(next_fr)
<span class="hljs-comment"># 计算两个日期差</span>
res = relativedelta(date(<span class="hljs-number">2060</span>, <span class="hljs-number">6</span>, <span class="hljs-number">20</span>), today)
<span class="hljs-built_in">print</span>(res) <span class="hljs-comment"># relativedelta(years=+37, months=+9, days=+12)</span>
<span class="hljs-built_in">print</span>(res.years) <span class="hljs-comment"># 37</span>
</code></div></pre>
<h2><a id="5__316"></a>5 案例讲解</h2>
<h3><a id="51__317"></a>5.1 列表时间排序</h3>
<pre><div class="hljs"><code class="lang-python"><span class="hljs-keyword">import</span> datetime
<span class="hljs-keyword">def</span> <span class="hljs-title function_">get_timestamp</span>(<span class="hljs-params">date</span>):
<span class="hljs-keyword">return</span> datetime.datetime.strptime(date, <span class="hljs-string">"%Y-%m-%d"</span>).timestamp()
time_list = [<span class="hljs-string">"2023-06-01"</span>, <span class="hljs-string">"2022-10-25"</span>, <span class="hljs-string">"2022-11-25"</span>, <span class="hljs-string">"2021-10-03"</span>]
time_list = <span class="hljs-built_in">sorted</span>(time_list, key=<span class="hljs-keyword">lambda</span> date: get_timestamp(date))
<span class="hljs-built_in">print</span>(time_list)
</code></div></pre>
<p><img src="https://static.couragesteak.com/article/c18466a25c29b00b970e5436bcc9448e.png" alt="image.png" /></p>
留言