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

当您处理涉及时间戳的数据时,将字符串转换为 DateTime 对象是一项常见任务。Python 在 datetime 模块的帮助下使这变得相对简单。

在Python中,将字符串转换为带有时区的日期时间对象需要使用datetime模块。具体来说,您必须使用 datetime 类、timezone 类和 strptime 方法。

在此示例中,我导入了一个名为timezone的模块。datetime.now(timezone('UTC'))用于获取当前时间和时区。格式指定为时间 =“%Y-%m-%d %H:%M:%S%Z%z”。%z 用于与 DateTime 一起获取时区。

from datetime import datetime
from pytz import timezone
time = "%Y-%m-%d %H:%M:%S %Z%z"
time = datetime.now(timezone('UTC'))
print('UTC :', time)

将字符串转换为带时区的日期时间
在 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)


将字符串转换为以毫秒为单位的日期时间
在此示例中,我导入了一个名为DateTime的模块。dt = datetime.datetime.now()用于获取当前时间。这里,%f用于获取以毫秒为单位的时间。

import datetime
dt = datetime.datetime.now()
dt.strftime('%Y/%m/%d %H:%M:%S.%f')
print(dt)


将字符串转换为日期时间 iso 格式
在此示例中,我导入了一个名为datetime的模块,并使用.isoformat将当前时间转换为 iso 格式。

from datetime import datetime
dt = datetime.now()
print(dt.isoformat())


将字符串转换为日期时间 yyyy-mm-dd
现在我们可以看到如何在 Python 中将字符串转换为日期时间 yyyy-mm-dd。

  • 在此示例中,我导入了一个名为datetime的模块。并将输入“2020-12-21 ”分配给变量dt_string,格式为format =“%Y-%m-%d”。
  • strptime是一个字符串,根据格式表示时间。
  • dt_object = datetime.datetime.strptime(dt_string, format)在这两个参数中传递一个是dt_string,另一个是format。

import datetime
dt_string = "2020-12-21" 
format =
"%Y-%m-%d" 
dt_object = datetime.datetime.strptime(dt_string, format)
print(dt_object)


将字符串转换为日期时间 UTC
在这里,我们可以看到如何在 Python 中将字符串转换为日期时间 utc 格式。

  • 在此示例中,我导入了名为pytz 和 datetime的模块。并将时区指定为pytz.timezone (“亚洲/加尔各答”)。
  • Pytz是一个用于时区计算的库,lc.localize()用于创建一个简单的时区。一个简单的 datetime 对象称为 timezone naive,lc_datetime.astimezone()是一个用于根据所需时区设置时间的函数。

import pytz, datetime
lc = pytz.timezone ("Asia/kolkata")
datetime = datetime.datetime.strptime (
"2020-12-22 10:11:12", "%Y-%m-%d %H:%M:%S")
lc_datetime = lc.localize(datetime)
utc_date_time = lc_datetime.astimezone(pytz.utc)
print(utc_date_time)