PYTHON基础技能 – Python 10个日期和时间操作的实用技巧

释放双眼,带上耳机,听听看~!

技巧1:导入时间和datetime模块

在Python中,处理日期和时间首先需要导入相应的模块。

1
datetime

模块提供了非常强大的功能。


1
import&nbsp;datetime<br><br><em>#&nbsp;显示当前日期和时间</em><br>now&nbsp;=&nbsp;datetime.datetime.now()<br>print("现在的时间是:",&nbsp;now)

输出 :


1
现在的时间是:&nbsp;2023-04-05&nbsp;14:23:45.123456

解释

1
datetime.datetime.now()

获取当前的日期和时间。


技巧2:格式化日期

日期时间可以按照特定的格式显示,使用

1
strftime

函数。


1
formatted_date&nbsp;=&nbsp;now.strftime("%Y-%m-%d&nbsp;%H:%M:%S")<br>print("格式化后的日期:",&nbsp;formatted_date)

输出 :


1
格式化后的日期:&nbsp;2023-04-05&nbsp;14:23:45

解释

1
%Y

代表四位数的年份,

1
%m

代表月份,

1
%d

是日,

1
%H

是小时(24小时制),

1
%M

是分钟,

1
%S

是秒。


技巧3:计算日期差

想知道两个日期之间的差距?用

1
timedelta

对象。


1
tomorrow&nbsp;=&nbsp;now&nbsp;+&nbsp;datetime.timedelta(days=1)<br>print("明天的日期是:",&nbsp;tomorrow.strftime("%Y-%m-%d"))

输出 :


1
明天的日期是:&nbsp;2023-04-06

解释

1
timedelta(days=1)

表示一天的时间增量。


技巧4:提取日期部分

有时候只需要日期或时间的一部分。


1
date_only&nbsp;=&nbsp;now.date()<br>time_only&nbsp;=&nbsp;now.time()<br>print("今天日期:",&nbsp;date_only)<br>print("当前时间:",&nbsp;time_only)

输出 :


1
今天日期:&nbsp;2023-04-05<br>当前时间:&nbsp;14:23:45.123456

解释

1
.date()

1
.time()

分别用来提取日期和时间部分。


技巧5:解析字符串为日期

要将字符串转换成日期格式,使用

1
strptime


1
date_string&nbsp;=&nbsp;"2023-04-05"<br>parsed_date&nbsp;=&nbsp;datetime.datetime.strptime(date_string,&nbsp;"%Y-%m-%d")<br>print("解析后的日期:",&nbsp;parsed_date)

输出 :


1
解析后的日期:&nbsp;2023-04-05&nbsp;00:00:00

解释:这个函数需要两个参数:字符串和其格式。


技巧6:日期的加减

不仅仅是计算明天,还可以加减任意天数、小时等。


1
birthday&nbsp;=&nbsp;datetime.date(2023,&nbsp;4,&nbsp;15)<br><em>#&nbsp;假设生日后一周</em><br>after_birthday&nbsp;=&nbsp;birthday&nbsp;+&nbsp;datetime.timedelta(days=7)<br>print("生日后一周的日期:",&nbsp;after_birthday)

输出 :


1
生日后一周的日期:&nbsp;2023-04-22

解释

1
timedelta

灵活用于日期加减。


技巧7:处理时区

使用

1
pytz

库来处理不同时区,这在处理国际数据时尤为重要。

首先,确保安装了

1
pytz


1
pip&nbsp;install&nbsp;pytz

然后在代码中使用:


1
from&nbsp;datetime&nbsp;import&nbsp;datetime<br>import&nbsp;pytz<br><br>utc_now&nbsp;=&nbsp;datetime.now(pytz.utc)&nbsp;&nbsp;<em>#&nbsp;获取UTC时间</em><br>shanghai_tz&nbsp;=&nbsp;pytz.timezone('Asia/Shanghai')<br>shanghai_time&nbsp;=&nbsp;utc_now.astimezone(shanghai_tz)<br>print("上海的当前时间:",&nbsp;shanghai_time.strftime("%Y-%m-%d&nbsp;%H:%M:%S"))

注意:确保正确导入和使用时区名称。


技巧8:循环日期

有时候我们需要遍历一系列日期,比如生成一个月的日历。


1
start_date&nbsp;=&nbsp;datetime(2023,&nbsp;4,&nbsp;1)<br>end_date&nbsp;=&nbsp;datetime(2023,&nbsp;4,&nbsp;30)<br><br>for&nbsp;single_date&nbsp;in&nbsp;(start_date&nbsp;+&nbsp;timedelta(days=x)&nbsp;for&nbsp;x&nbsp;in&nbsp;range((end_date&nbsp;-&nbsp;start_date).days&nbsp;+&nbsp;1)):<br>&nbsp;&nbsp;&nbsp;&nbsp;print(single_date.strftime("%Y-%m-%d"))

输出:会列出2023年4月的每一天。

解释:使用生成器表达式遍历日期范围。


技巧9:日期时间的比较

Python中的日期时间可以直接比较大小。


1
date1&nbsp;=&nbsp;datetime(2023,&nbsp;4,&nbsp;5)<br>date2&nbsp;=&nbsp;datetime(2023,&nbsp;4,&nbsp;6)<br><br>if&nbsp;date1&nbsp;&lt;&nbsp;date2:<br>&nbsp;&nbsp;&nbsp;&nbsp;print("date1在date2之前")<br>else:<br>&nbsp;&nbsp;&nbsp;&nbsp;print("date1不早于date2")

输出 :


1
date1在date2之前

解释:日期时间对象遵循自然的比较规则。


技巧10:日期作为序列

可以将日期视为序列,利用

1
range

函数生成日期范围,但需借助第三方库如

1
dateutil.relativedelta


1
from&nbsp;datetime&nbsp;import&nbsp;datetime<br>from&nbsp;dateutil.relativedelta&nbsp;import&nbsp;relativedelta<br><br>start&nbsp;=&nbsp;datetime(2023,&nbsp;4,&nbsp;1)<br>for&nbsp;i&nbsp;in&nbsp;range(5):<br>&nbsp;&nbsp;&nbsp;&nbsp;print(start&nbsp;+&nbsp;relativedelta(months=i))

输出:列出从2023年4月开始的5个月的日期。

解释

1
relativedelta

能方便地处理日期的相对变化。


实战案例:年龄计算

假设有一个用户注册表,包含用户的出生日期,编写一个程序计算并打印出每个用户的年龄。


1
from&nbsp;datetime&nbsp;import&nbsp;datetime<br><br><em>#&nbsp;示例用户数据</em><br>users&nbsp;=&nbsp;&#091;<br>&nbsp;&nbsp;&nbsp;&nbsp;{"name":&nbsp;"Alice",&nbsp;"birthdate":&nbsp;"1995-03-20"},<br>&nbsp;&nbsp;&nbsp;&nbsp;{"name":&nbsp;"Bob",&nbsp;"birthdate":&nbsp;"1988-11-15"}<br>]<br><br><em>#&nbsp;当前日期</em><br>today&nbsp;=&nbsp;datetime.now().date()<br><br>for&nbsp;user&nbsp;in&nbsp;users:<br>&nbsp;&nbsp;&nbsp;&nbsp;birthdate&nbsp;=&nbsp;datetime.strptime(user&#091;"birthdate"],&nbsp;"%Y-%m-%d").date()<br>&nbsp;&nbsp;&nbsp;&nbsp;age&nbsp;=&nbsp;today.year&nbsp;-&nbsp;birthdate.year&nbsp;-&nbsp;((today.month,&nbsp;today.day)&nbsp;&lt;&nbsp;(birthdate.month,&nbsp;birthdate.day))<br>&nbsp;&nbsp;&nbsp;&nbsp;print(f"{user&#091;'name']}的年龄是:&nbsp;{age}")

解释:这里使用了当前日期与用户出生日期计算年龄,注意考虑是否已经过了今年的生日来调整年龄计算。

以上技巧和实战案例覆盖了Python日期时间处理的基础和进阶,帮助你应对日常开发中的各种日期时间处理需求。

给TA打赏
共{{data.count}}人
人已打赏
安全运维

安全运维之道:发现、解决问题的有效闭环

2024-4-14 20:59:36

安全运维

稳定性建设 – 架构优化的关键策略

2025-2-11 17:15:56

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索