欢迎访问宙启技术站
智能推送

Python日期时间函数:管理时间轻松愉快

发布时间:2023-06-21 04:14:42

Python是一种高级编程语言,它的标准库提供了许多可用于处理日期和时间的内置函数和模块。如果您需要在Python中计算、比较或格式化日期和时间,这里有一些有用的函数和技巧。

1. datetime模块

Python的datetime模块是处理日期和时间的主要模块。它提供了date、time和datetime等类,用于表示日期、时间和日期时间。

import datetime

# 创建日期
# 今天的日期
today = datetime.date.today()
# 2021-01-01
d = datetime.date(2021, 1, 1)

# 创建时间
# 当前时间
now = datetime.datetime.now().time()
# 13:30:00.987654
t = datetime.time(13, 30, 0, 987654)

# 创建日期时间
# 当前日期时间
now = datetime.datetime.now()
# 2021-01-01 13:30:00.987654
dt = datetime.datetime(2021, 1, 1, 13, 30, 0, 987654)

2. strftime 和 strptime 函数

strftime函数是datetime类和time类的成员函数,可以将日期时间格式化为特定字符串形式。strptime函数是datetime模块的函数,是将字符串解析成日期时间的函数。

# 将日期时间格式化为字符串
# 2021-01-01 13:30:00.987654
dt = datetime.datetime(2021, 1, 1, 13, 30, 0, 987654)
# 2021-01-01 01:30:00 PM
dt_str = dt.strftime("%Y-%m-%d %I:%M:%S %p")

# 将字符串解析成日期时间
# 2021-01-01 13:30:00.987654
dt_str = '2021-01-01 13:30:00.987654'
dt = datetime.datetime.strptime(dt_str, '%Y-%m-%d %H:%M:%S.%f')

可以使用strftime函数提供的格式字符串,将日期时间格式化为各种不同的字符串形式。

# %a Weekday as locale’s abbreviated name.
# %A Weekday as locale’s full name.
# %w Weekday as a decimal number, where 0 is Sunday and 6 is Saturday.
# %d Day of the month as a zero-padded decimal number.
# %b Month as locale’s abbreviated name.
# %B Month as locale’s full name.
# %m Month as a zero-padded decimal number.
# %y Year without century as a zero-padded decimal number.
# %Y Year with century as a decimal number.
# %H Hour (24-hour clock) as a zero-padded decimal number.
# %I Hour (12-hour clock) as a zero-padded decimal number.
# %p Locale’s equivalent of either AM or PM.
# %M Minute as a zero-padded decimal number.
# %S Second as a zero-padded decimal number.
# %f Microsecond as a decimal number, zero-padded on the left.

# Format: 2021-01-01 01:30:00 PM
dt = datetime.datetime(2021, 1, 1, 13, 30, 0, 987654)
dt_str = dt.strftime("%Y-%m-%d %I:%M:%S %p")

3. 时间差 timedelta

timedelta 是Python datetime模块中的一个类,用于计算两个日期或时间之间的时间差。

# 计算时间差
# datetime.datetime(2021, 1, 1, 13, 30, 0, 0)
dt1 = datetime.datetime(2021, 1, 1, 13, 30, 0, 0)
# datetime.datetime(2021, 1, 2, 13, 30, 0, 0)
dt2 = datetime.datetime(2021, 1, 2, 13, 30, 0, 0)
# datetime.timedelta(days=7, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0)
delta = dt2 - dt1

# 相加或相减时间差
# datetime.datetime(2021, 1, 1, 13, 30, 0, 0)
dt = datetime.datetime(2021, 1, 1, 13, 30, 0, 0)
# datetime.datetime(2022, 1, 1, 13, 30, 0, 0)
dt2 = dt + datetime.timedelta(days=365)

通过 timedelta 可以实现在一个时间上添加或移除任意数量的时间。

4. calendar模块

Python的calendar模块提供了各种日历功能,包括获取给定月份的日历字符串、判断给定年份是否为闰年,以及将日期转换为星期几。

import calendar

# 获取当前月份的日历
# 2021年6月日历
cal = calendar.month(2021, 6)

# 获取星期几
dt = datetime.datetime(2021, 6, 15, 13, 30, 0, 0)
# 星期二
weekday = calendar.day_name[dt.weekday()]

# 判断是否是闰年
year = 2020
is_leap = calendar.isleap(year)

5. pytz模块

Python的标准时间类并不支持时区,因此我们需要借助第三方模块 pytz 来处理它。

import pytz

# 获取时区
tz = pytz.timezone('Asia/Shanghai')

# 在时区下获取当前时间
dt = datetime.datetime.now(tz)

如果你想要找到所有可用的时区,请使用 pytz.all_timezones 变量。

# 所有可用的时区
all_timezones = pytz.all_timezones

pytz支持将datetime对象转换为不同时区的相同时间。

# 将时间转换到另一个时区
# 假设 dt 是在 UTC 时间上的时间戳
utc_tz = pytz.timezone('UTC')
new_tz = pytz.timezone('Asia/Shanghai')
dt = utc_tz.localize(dt)
new_dt = dt.astimezone(new_tz)

总结

在本文中,我们介绍了一些用于管理日期时间的Python函数和模块。无论您是要在Python中计算、比较或格式化日期和时间,这些函数和模块都会提供一些了许可选的方法。

在你的Python代码中使用这些函数和模块将使你的处理日期和时间的工作变得更容易和更加愉快!