Python datetime 模块是一个用于处理日期和时间的强大工具。它提供了一系列函数和类来以各种格式操作、格式化和解析日期和时间。使用 Python datetime,你可以轻松地对日期和时间执行算术运算,在不同时区之间转换,以及更多操作。无论你是处理时间戳、日历还是调度任务,datetime 都可以帮助使你的 Python 代码更健壮、更灵活。
Python 中的日期时间格式
Python 的内置datetime
模块用于处理日期和时间。以下是 Python 中一些常见的 datetime 格式
-
YYYY-MM-DD:年份、月份和日期,用连字符分隔。
-
YYYY/MM/DD:年份、月份和日期,用斜杠分隔。
-
MM/DD/YYYY:月份、日期和年份,用斜杠分隔。
-
DD-MM-YYYY:日期、月份和年份,用连字符分隔。
-
DD/MM/YYYY:日期、月份和年份,用斜杠分隔。
-
YYYY-MM-DD HH:MM:SS:年份、月份和日期,用连字符分隔,后跟小时、分钟和秒,用冒号分隔。
-
YYYY-MM-DD HH:MM:SS.mmmmmm:年份、月份和日期,用连字符分隔,后跟小时、分钟和秒,用冒号分隔,微秒用点分隔。
Python 中的日期和时间格式化
在 Python 中,你可以使用datetime
对象的strftime()
方法将日期和时间格式化为字符串。此方法允许你指定一个格式字符串,该字符串定义如何格式化日期或时间。
以下是 Python 中一些常用的日期和时间格式
-
%Y:年份(4 位数字)
-
%m:月份(零填充)
-
%d:月份中的天数(零填充)
-
%H:小时(24 小时制)
-
%M:分钟(零填充)
-
%S:秒(零填充)
如何在 Python 中从 Datetime 对象获取当前日期和时间
要从 datetime
Python 中的对象中提取当前日期,可以使用 date()
方法。以下是如何通过访问 datetime
对象的 date()
方法将 datetime
对象转换为 date
对象的示例
from datetime import datetime
current_datetime = datetime.now()
current_date = current_datetime.date()
print(current_date)
此代码将以 YYYY-MM-DD 格式输出当前日期。例如,如果你今天(2023 年 5 月 17 日)运行代码,输出将为 2023-05-17。
以下是如何获取当前日期和时间的示例
from datetime import datetime
# Get the current date and time
current_datetime = datetime.now()
print(current_datetime) # Output: Current date and time in the format YYYY-MM-DD
如何从 Datetime 对象获取当前年份
要从 Python 中的 datetime 对象中提取年份,可以使用 year 属性。以下是一个示例
from datetime import datetime
# Create a datetime object
dt = datetime(2023, 5, 17, 12, 34, 56)
# Extract the year from the datetime object
year = dt.year
print(year) # Output: 2023
Python 中的 AM/PM 日期时间格式
在 Python 的 datetime
模块中,可以使用 strftime
方法中的 %I
和 %p
指令将 datetime 对象格式化为 AM/PM 格式的时间。以下是一个示例
from datetime import datetime
# Get the current datetime
now = datetime.now()
# Format the time in AM/PM format
formatted_time = now.strftime("%I:%M %p")
# Print the formatted time
print(formatted_time)
此代码将以“hh:mm AM/PM”格式输出当前时间。例如,如果当前时间为下午 2:30,输出将为“02:30 PM”。
时钟时间格式
在 Python 中,可以使用 datetime
模块以“时钟时间”格式检索当前时间。以下是一个示例
from datetime import datetime
# Get the current time
current_time = datetime.now().time()
# Format the time as a clock time
clock_time = current_time.strftime("%H:%M:%S")
print("Current Clock Time:", clock_time) # Output: Current Clock Time: 12:34:56
strftime()
方法用于将时间格式化为时钟时间字符串。格式代码 %H
表示小时(24 小时制),%M
表示分钟,%S
表示秒。
通过使用带有适当格式代码的 strftime()
方法,可以获取时钟时间格式的当前时间。
在 Python 中将日期时间转换为字符串的方法
要将 Python datetime
对象转换为字符串,可以使用 strftime()
方法。strftime()
方法将格式字符串作为参数,并根据指定的格式返回 datetime 对象的字符串表示形式。
以下是如何格式化当前日期和时间的示例
import datetime
now = datetime.datetime.now() # Get the current datetime object
formatted_date = now.strftime("%Y-%m-%d %H:%M:%S") # Format the datetime object
print(formatted_date) # Print the formatted datetime string
字符串到日期时间的转换
可以在 Python 中使用 datetime
模块将字符串转换为 Python 中的 datetime 对象。以下是如何将字符串转换为时间的示例
from datetime import datetime
# define the format of the input string
input_format = '%Y-%m-%d %H:%M:%S'
# input string
input_string = '2022-05-14 10:30:00'
# convert the input string to a datetime object
dt_object = datetime.strptime(input_string, input_format)
# print the datetime object
print(dt_object)
在此示例中,我们使用 Python 的 datetime.strptime()
方法将输入字符串转换为 datetime 对象。strptime()
方法采用两个参数:输入字符串和输入字符串的格式。格式字符串使用各种格式代码来指定输入字符串的格式。在这种情况下,格式代码 %Y
表示年份,%m
表示月份,%d
表示日期,%H
表示小时,%M
表示分钟,%S
表示秒。
dt_object
变量现在包含一个 datetime 对象,该对象表示输入字符串中的日期和时间。然后,可以在 datetime 对象上执行各种操作,例如以不同的方式对其进行格式化或对其执行算术运算。
可以使用相同的算法将字符串转换为 date
对象。
让我们看看 Python 中将字符串转换为 date
对象的示例
from datetime import datetime
date_string = "2023-05-22"
# Convert string to date object
my_date = datetime.strptime(date_string, "%Y-%m-%d").date()
print(my_date) # Output: 2023-05-22
datetime.now() 和 datetime.today() 方法
在 Python 中,可以使用内置的 datetime
模块处理日期和时间值。要获取当前日期和时间,可以使用 datetime.now()
方法。
在以下示例中,我们首先获取日期和时间,然后打印它
from datetime import datetime
now = datetime.now()
print("Current date and time:", now)
这将以 YYYY-MM-DD HH:MM:SS.ssssss 格式输出当前日期和时间。
还有另一种方法可以获取当前日期和时间,可以使用 datetime.today() 方法。以下是一个示例
import datetime
now = datetime.datetime.today()
print(now) # This will output the current date and time in the format YYYY-MM-DD HH:MM:SS.mmmmmm.
如果只想显示当前时间而不显示日期,可以在打印前使用 strftime()
方法格式化输出
import datetime
current_time = datetime.datetime.now().strftime("%H:%M:%S")
print("Current time:", current_time)
这将以 HH:MM:SS 格式输出当前时间。
如何从 datetime 对象中提取日期
在 Python 中,你可以使用 .date()
方法从 datetime 对象中提取日期部分。这是一个示例
import datetime
# create a datetime object
dt = datetime.datetime(2023, 5, 14, 10, 30, 0)
# extract the date portion
date = dt.date()
# print the date
print(date) # output: 2023-05-14
日期时间到纪元转换
你可以使用 timestamp()
方法将 Python datetime
对象转换为纪元时间(即自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数)。我们来看看如何将 Python datetime
对象转换为时间戳的示例
import datetime
# Create a datetime object for May 14, 2023 at 12:34:56 UTC
dt = datetime.datetime(2023, 5, 14, 12, 34, 56)
# Convert the datetime object to epoch time
epoch_time = int(dt.timestamp())
print(epoch_time) # Output: 1687877696
纪元到日期时间转换
你可以使用 datetime.fromtimestamp()
方法将 Unix 纪元时间(即自 1970 年 1 月 1 日 00:00:00 UTC 以来经过的秒数)转换为 Python datetime
对象。
以下是如何在 Python 中将 Unix 时间转换为 datetime 的示例
import datetime
# Unix epoch time for May 14, 2023 at 12:34:56 UTC
epoch_time = 1687877696
# Convert the epoch time to a datetime object
dt = datetime.datetime.fromtimestamp(epoch_time)
print(dt) # Output: 2023-05-14 12:34:56
如果你想在 Python 中将时间戳转换为特定时区的 datetime
对象,你可以使用 pytz
或 dateutil
等库来设置所需的时区。
解析为 datetime 模块
要将日期或时间字符串解析为 datetime
对象,你可以使用 datetime.datetime.strptime()
方法。
strptime()
方法接受两个参数:你想要解析的字符串,以及指定输入字符串格式的格式字符串。格式字符串使用特殊代码来表示日期和时间的不同部分,例如 %Y
表示年份,%m
表示月份,%d
表示日期,%H
表示小时,%M
表示分钟,%S
表示秒。
以下是如何解析 "YYYY-MM-DD" 格式的日期字符串的示例
import datetime
date_string = "2023-05-14"
date_object = datetime.datetime.strptime(date_string, "%Y-%m-%d")
print(date_object)
Python 中的时区和 DateTime 模块
你可以使用 datetime
模块在 Python 中处理日期、时间和时区。
要处理时区,你需要使用 pytz
库。此库提供了时区的综合数据库和处理时区的工具。
以下是如何在 Python 中使用 datetime
模块和 pytz
库处理时区的示例
import datetime
import pytz
# create a datetime object in UTC timezone
utc_datetime = datetime.datetime.now(tz=pytz.utc)
print("UTC datetime:", utc_datetime)
# convert the datetime object to a different timezone
local_timezone = pytz.timezone('America/New_York')
local_datetime = utc_datetime.astimezone(local_timezone)
print("Local datetime:", local_datetime)
在此示例中,我们首先使用 datetime.datetime.now()
方法在 UTC 时区创建一个 datetime
对象,并将 pytz.utc
时区对象作为 tz
参数传递。然后我们打印出 UTC 日期时间。
接下来,我们创建一个表示本地时区(America/New_York)的 pytz.timezone
对象,然后使用 astimezone()
方法将 UTC 日期时间对象转换为本地时区。最后,我们打印出本地日期时间。
DateTime 模块和 Timedelta 类
Python 中的 datetime
模块提供了用于处理日期、时间和时间间隔的各种类。模块中可用的一个类是 timedelta
,它表示两个日期或时间之间的持续时间或差值。
以下是如何使用 timedelta
的示例
import datetime
# create a datetime object for the current time
now = datetime.datetime.now()
# create a timedelta object representing a duration of 1 day
one_day = datetime.timedelta(days=1)
# calculate a new datetime object that is 1 day in the future
tomorrow = now + one_day
# print the result
print(tomorrow)
以下是如何在 Python 中查找时间增量或时间差的示例
import datetime
# create two datetime objects
start_time = datetime.datetime(2023, 5, 15, 10, 30, 0)
end_time = datetime.datetime(2023, 5, 15, 14, 45, 0)
# calculate the time difference
delta = end_time - start_time
# print the result
print(delta) # prints: 4:15:00
通过这种方式,你可以测量任何代码段的执行时间。
要计算以秒为单位的时间差,你可以使用 total_seconds()
方法。
timedelta
类提供了几个其他参数,可用于指定不同的时间单位,包括 weeks
、hours
、minutes
、seconds
、microseconds
和 milliseconds
。
如何比较日期时间对象
在 Python 中,你可以使用比较运算符(<
、>
、<=
、>=
、==
、!=
)比较 datetime
对象。
我们来看看如何在 Python 中比较日期的示例
from datetime import datetime
# create datetime objects
date1 = datetime(2021, 9, 1)
date2 = datetime(2021, 9, 2)
# compare datetime objects
if date1 < date2:
print("date1 is before date2")
else:
print("date1 is after date2")
比较日期的结果是“date1 在 date2 之前”。
您还可以将 datetime
对象与 date
对象进行比较。在这种情况下,date
对象将被视为具有午夜时间。例如
from datetime import datetime, date
# create datetime and date objects
date1 = datetime(2021, 9, 1, 10, 30)
date2 = date(2021, 9, 2)
# compare datetime and date objects
if date1 < date2:
print("date1 is before date2")
else:
print("date1 is after date2")
如何向日期时间对象添加天数
要向 Python datetime
对象添加时间,可以使用 datetime
模块中的 timedelta
类。
以下是一个示例代码片段,展示如何将 3 天添加到当前日期
from datetime import datetime, timedelta
current_date = datetime.now()
print("Current date:", current_date)
new_date = current_date + timedelta(days=3)
print("New date:", new_date)
您可以通过在创建 timedelta
对象时更改 days 参数的值来调整要添加的天数。
Python 中的 Datetime 模块和 isoformat() 方法
isoformat()
方法用于以 ISO 8601 格式获取日期或时间对象的字符串表示形式。以下是一个示例
import datetime
# create a datetime object for May 14, 2023 at 2:30 PM
dt = datetime.datetime(2023, 5, 14, 14, 30)
# get the ISO 8601 string representation of the datetime object
iso_str = dt.isoformat()
print(iso_str) # output: 2023-05-14T14:30:00
在 ISO 8601 格式中,日期和时间由字母“T”分隔,时间以 24 小时制给出。使用 isoformat()
方法获取的 datetime 对象的字符串表示形式不包括时区信息。如果您需要包括时区信息,可以使用带有适当格式字符串的 strftime()
方法。
datetime.utcnow() 方法
在 Python 中,datetime
模块提供了一个名为 datetime.utcnow()
的方法,该方法以 datetime 对象形式返回当前日期和时间,采用 UTC(协调世界时)。
以下是一个示例
import datetime
now_utc = datetime.datetime.utcnow()
print(now_utc)
这将以 YYYY-MM-DD HH:MM:SS.mmmmmm
格式输出当前 UTC 日期和时间。
值得注意的是,datetime.utcnow()
返回当前 UTC 时间,而不考虑任何时区偏移。如果您想将此时间转换为本地时区,则需要使用 datetime.astimezone()
方法。
如何在 Python 中打印日期时间对象
要在 Python 中以特定格式打印 datetime
对象,可以使用 datetime
模块中的 strftime()
方法。此方法允许您将 datetime 对象格式化为字符串表示形式。
以下是如何以特定格式打印 datetime 对象的示例
from datetime import datetime
# Create a datetime object
dt = datetime(2023, 5, 17, 12, 34, 56)
# Format and print the datetime object
formatted_datetime = dt.strftime("%Y-%m-%d %H:%M:%S")
print(formatted_datetime)
在此示例中,我们创建了一个表示特定日期和时间的 datetime
对象 dt
。然后,我们使用 strftime()
方法将其格式化为字符串。格式字符串 "%Y-%m-%d %H:%M:%S"
指定了 datetime 字符串的所需格式。%Y
表示四位数的年份,%m
表示零填充的月份,%d
表示零填充的日期,%H
表示 24 小时制的小时,%M
表示分钟,%S
表示秒。
输出将是格式化的 datetime 字符串
2023-05-17 12:34:56
您可以根据您的特定要求自定义格式字符串。有关 strftime()
格式代码的更多详细信息,您可以参考 Python 文档:strftime() 和 strptime() 格式代码。
Datetime 模块的 Date 类
datetime
模块提供了 date
类,它允许您专门使用日期(而不考虑时间)。以下是如何使用 date
类的示例
from datetime import date
# Create a date object for May 22, 2023
my_date = date(2023, 5, 22)
# Get individual components of the date
year = my_date.year
month = my_date.month
day = my_date.day
print(year, month, day) # Output: 2023 5 22