Python 10个日期和时间操作的实用技巧

资源分享

对于刚入门学习Python还找不到方向的小伙伴可以试试我的这份学习方法和籽料,免费自取!!

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

在Python中,处理日期和时间首先需要导入相应的模块。datetime模块提供了非常强大的功能。

import datetime

# 显示当前日期和时间
now = datetime.datetime.now()
print("现在的时间是:", now)

输出 :

现在的时间是: 2023-04-05 14:23:45.123456

解释datetime.datetime.now()获取当前的日期和时间。


技巧2:格式化日期

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

formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
print("格式化后的日期:", formatted_date)

输出 :

格式化后的日期: 2023-04-05 14:23:45

解释%Y代表四位数的年份,%m代表月份,%d是日,%H是小时(24小时制),%M是分钟,%S是秒。


技巧3:计算日期差

想知道两个日期之间的差距?用timedelta对象。

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

输出 :

明天的日期是: 2023-04-06

解释timedelta(days=1)表示一天的时间增量。


技巧4:提取日期部分

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

date_only = now.date()
time_only = now.time()
print("今天日期:", date_only)
print("当前时间:", time_only)

输出 :

今天日期: 2023-04-05
当前时间: 14:23:45.123456

解释.date().time()分别用来提取日期和时间部分。


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

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

date_string = "2023-04-05"
parsed_date = datetime.datetime.strptime(date_string, "%Y-%m-%d")
print("解析后的日期:", parsed_date)

输出 :

解析后的日期: 2023-04-05 00:00:00

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


技巧6:日期的加减

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

birthday = datetime.date(2023, 4, 15)
# 假设生日后一周
after_birthday = birthday + datetime.timedelta(days=7)
print("生日后一周的日期:", after_birthday)

输出 :

生日后一周的日期: 2023-04-22

解释timedelta灵活用于日期加减。


技巧7:处理时区

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

首先,确保安装了pytz

pip install pytz

然后在代码中使用:

from datetime import datetime
import pytz

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

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


技巧8:循环日期

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

start_date = datetime(2023, 4, 1)
end_date = datetime(2023, 4, 30)

for single_date in (start_date + timedelta(days=x) for x in range((end_date - start_date).days + 1)):
    print(single_date.strftime("%Y-%m-%d"))

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

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


技巧9:日期时间的比较

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

date1 = datetime(2023, 4, 5)
date2 = datetime(2023, 4, 6)

if date1 < date2:
    print("date1在date2之前")
else:
    print("date1不早于date2")

输出 :

date1在date2之前

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


技巧10:日期作为序列

可以将日期视为序列,利用range函数生成日期范围,但需借助第三方库如dateutil.relativedelta

from datetime import datetime
from dateutil.relativedelta import relativedelta

start = datetime(2023, 4, 1)
for i in range(5):
    print(start + relativedelta(months=i))

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

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


实战案例:年龄计算

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

from datetime import datetime

# 示例用户数据
users = [
    {"name": "Alice", "birthdate": "1995-03-20"},
    {"name": "Bob", "birthdate": "1988-11-15"}
]

# 当前日期
today = datetime.now().date()

for user in users:
    birthdate = datetime.strptime(user["birthdate"], "%Y-%m-%d").date()
    age = today.year - birthdate.year - ((today.month, today.day) < (birthdate.month, birthdate.day))
    print(f"{user['name']}的年龄是: {age}")

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

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

好了,今天的分享就到这里了,我们下期见。如果本文对你有帮助,请动动你可爱的小手指点赞、转发、收藏吧!

文末福利

读者福利:对Python感兴趣的童鞋,为此我专门给大家准备好了Python全套的学习资料

​​

  Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

图片​​​

视频教程

大信息时代,传统媒体远不如视频教程那么生动活泼,一份零基础到精通的全流程视频教程分享给大家

图片​​​

实战项目案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

图片​​​

图片​​​

副业兼职路线

​​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值