python 日期和时间

在 Python 中,日期和时间的处理主要依赖于 datetime 模块,它提供了用于操作日期和时间的类和方法。通过 datetime 模块,你可以轻松地获取当前日期和时间、格式化日期和时间、进行日期计算等。

1. 导入 datetime 模块

在使用日期和时间相关的功能之前,需要导入 datetime 模块:

import datetime
2. 获取当前日期和时间

2.1 获取当前日期

datetime.date.today() 返回当前的日期。

today = datetime.date.today()
print(today)  # 输出:2025-02-18 (根据当前日期)
2.2 获取当前时间
datetime.datetime.now() 返回当前的日期和时间。

now = datetime.datetime.now()
print(now)  # 输出:2025-02-18 14:30:25.123456 (具体时间根据运行时刻而定)
2.3 获取当前时间戳

时间戳是自1970年1月1日(UTC)以来的秒数。你可以使用 datetime.datetime.now().timestamp() 来获取当前的时间戳。

timestamp = datetime.datetime.now().timestamp()
print(timestamp)  # 输出:当前时间的时间戳
3. 创建特定的日期和时间

你可以通过 datetime.date() 或 datetime.datetime() 创建自定义的日期和时间对象。

3.1 创建日期对象
d = datetime.date(2023, 5, 15)
print(d)  # 输出:2023-05-15
3.2 创建时间对象
t = datetime.time(14, 30, 45)  # 14小时30分钟45秒
print(t)  # 输出:14:30:45
3.3 创建日期时间对象
dt = datetime.datetime(2023, 5, 15, 14, 30, 45)
print(dt)  # 输出:2023-05-15 14:30:45
4. 日期和时间的格式化

你可以使用 strftime() 方法将 datetime 对象转换为字符串,并指定格式。

4.1 格式化日期和时间
strftime() 方法允许你自定义日期和时间的显示格式。

now = datetime.datetime.now()

# 格式化当前日期和时间
formatted_now = now.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_now)  # 输出:2025-02-18 14:30:25 (格式化为自定义样式)

# 常见的格式符:
# %Y - 年(四位数)
# %m - 月(01-12)
# %d - 日(01-31)
# %H - 小时(00-23)
# %M - 分钟(00-59)
# %S - 秒(00-59)
4.2 常见的日期时间格式
now = datetime.datetime.now()

print(now.strftime("%Y-%m-%d"))  # 输出:2025-02-18
print(now.strftime("%d/%m/%Y"))  # 输出:18/02/2025
print(now.strftime("%H:%M:%S"))  # 输出:14:30:25
5. 将字符串转换为日期时间
datetime.strptime() 方法可以将字符串解析为 datetime 对象。


date_string = "2025-02-18 14:30:25"
dt = datetime.datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
print(dt)  # 输出:2025-02-18 14:30:25
6. 日期和时间的运算

6.1 日期加减
你可以通过 timedelta 类来进行日期和时间的加减运算。

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

# 创建一个时间差对象(比如,5天)
delta = datetime.timedelta(days=5)

# 日期加 5 天
new_date = today + delta
print(new_date)  # 输出:2025-02-23

# 日期减去 5 天
earlier_date = today - delta
print(earlier_date)  # 输出:2025-02-13
6.2 计算日期之间的差异

可以通过减法操作计算两个日期之间的差异,结果将是一个 timedelta 对象,表示两个日期之间的天数、秒数等。

date1 = datetime.date(2025, 2, 18)
date2 = datetime.date(2025, 2, 25)

# 计算日期差
difference = date2 - date1
print(difference)  # 输出:7 days, 0:00:00
print(difference.days)  # 输出:7(天数)
6.3 时间加减

同样的,时间也可以进行加减操作:

time1 = datetime.time(14, 30, 45)
delta = datetime.timedelta(hours=2, minutes=15)

# 时间加 2 小时 15 分钟
new_time = (datetime.datetime.combine(datetime.date.today(), time1) + delta).time()
print(new_time)  # 输出:16:45:45
7. 处理时区

datetime 模块还支持时区的处理,通过 timezone 类来表示时区。

7.1 获取当前时区时间
import pytz

# 获取 UTC 时间
utc_now = datetime.datetime.now(pytz.utc)
print(utc_now)  # 输出:2025-02-18 14:30:25+00:00

# 设置时区为美国纽约
eastern = pytz.timezone('US/Eastern')
eastern_time = utc_now.astimezone(eastern)
print(eastern_time)  # 输出:2025-02-18 09:30:25-05:00
需要安装 pytz 模块才能处理时区:

pip install pytz
8. 常见的日期时间操作

8.1 获取一周中的第几天
weekday() 方法返回星期几,0 是星期一,6 是星期天。

today = datetime.date.today()
print(today.weekday())  # 输出:0 (星期一)
8.2 获取一年中的第几天
timetuple().tm_yday 返回当前日期是当年中的第几天(1-366)。

today = datetime.date.today()
print(today.timetuple().tm_yday)  # 输出:49 (比如第 49 天)
9. 总结
  • 使用 datetime.date() 获取日期,datetime.datetime() 获取日期和时间。
  • 使用 strftime() 和 strptime() 进行日期时间的格式化与解析。
  • 使用 timedelta 进行日期和时间的加减运算。
  • 通过 weekday() 和 timetuple().tm_yday 获取日期相关的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值