Python 中将字符串转换为日期时间

Python 中将字符串转换为带有时区的日期时间对象涉及将字符串解析为日期时间对象,然后将其与所需的时区相关联。为此,您可以使用 Python 中的 datetime 模块。

分步指南:

首先,从 datetime 模块导入必要的类。您将需要 datetime 类本身,以及 timezone 和 timedelta 类。

from datetime import datetime, timezone, timedelta

在将字符串转换为日期时间对象之前,您需要了解其格式。这很重要,因为您需要告知 Python 如何解释该字符串。
常见的格式包括:

“2023-06-18”的“%Y-%m-%d”
'%Y-%m-%d %H:%M:%S' 表示“2023-06-18 15:30:20”

您可以使用 datetime 类中的 strptime 方法将字符串转换为 datetime 对象。strptime 代表“字符串解析时间”,它需要两个参数:字符串及其格式。

date_string = "2023-06-18 15:30:20"
format_string =
"%Y-%m-%d %H:%M:%S"
datetime_object = datetime.strptime(date_string, format_string)

如果您正在解析的字符串包含时区信息,Python 也会自动解析它。如果没有,您可以手动关联时区。要手动关联时区,请使用replace附加时区的方法。您可以这样做:

# Associating a UTC timezone
datetime_in_utc = datetime_object.replace(tzinfo=timezone.utc)

# Associating a timezone with an offset (e.g., UTC+5:30)
offset = timezone(timedelta(hours=5, minutes=30))
datetime_with_offset = datetime_object.replace(tzinfo=offset)

如果字符串已经包含时区信息,可以直接解析:

date_string_with_timezone = "2023-06-18 15:30:20+05:30"
format_string_with_timezone =
"%Y-%m-%d %H:%M:%S%z"
datetime_with_timezone = datetime.strptime(date_string_with_timezone, format_string_with_timezone)

这是完整的代码:

from datetime import datetime, timezone, timedelta

# String without timezone information
date_string = "2023-06-18 15:30:20"
format_string =
"%Y-%m-%d %H:%M:%S"
datetime_object = datetime.strptime(date_string, format_string)

# Associating a timezone with an offset (e.g., UTC+5:30)
offset = timezone(timedelta(hours=5, minutes=30))
datetime_with_offset = datetime_object.replace(tzinfo=offset)
print(datetime_with_offset)

# String with timezone information
date_string_with_timezone =
"2023-06-18 15:30:20+05:30"
format_string_with_timezone =
"%Y-%m-%d %H:%M:%S%z"
datetime_with_timezone = datetime.strptime(date_string_with_timezone, format_string_with_timezone)
print(datetime_with_timezone)

此代码演示了如何将字符串转换为日期时间对象并将其与 Python 中的时区信息关联起来。