Python datetime是否将GMT追加到字符串的末尾?

Python datetime是否将GMT追加到字符串的末尾?,python,date,datetime,time,gmt,Python,Date,Datetime,Time,Gmt,我正在将php代码迁移到Python中,遇到了datetime。我的代码: date_raw = datetime.datetime.strptime(data["Campaign_Start_Date"], '%Y-%m-%d') date_new = date_raw.strftime("%Y-%m-%d"+"T"+"%H:%M:%S GMT") print(date_new) # 2020-09-14T00:00:00 GMT 我想要的输出是:2020-09-14T00:00:00-0

我正在将php代码迁移到Python中,遇到了datetime。我的代码:

date_raw = datetime.datetime.strptime(data["Campaign_Start_Date"], '%Y-%m-%d')
date_new = date_raw.strftime("%Y-%m-%d"+"T"+"%H:%M:%S GMT")
print(date_new)

# 2020-09-14T00:00:00 GMT

我想要的输出是:
2020-09-14T00:00:00-04:00
,因此我需要在字符串的末尾附加GMT,但找不到返回正确格式的方法。

strtime
无法从格式化为“%Y-%m-%d”的时间自动了解时区,您必须包含它,例如

from datetime import datetime
import pytz

# parse the string
datestring = '2020-05-04'
date = datetime.strptime(datestring, '%Y-%m-%d')

# add a timezone info
tz = pytz.timezone('US/Eastern')
date_est = tz.localize(date)
# datetime.datetime(2020, 5, 4, 0, 0, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)

print(date_est.isoformat())
# 2020-05-04T00:00:00-04:00
从日期时间导入日期时间
进口皮茨
#解析字符串
日期字符串='2020-05-04'
date=datetime.strtime(日期字符串,%Y-%m-%d)
#添加时区信息
tz=pytz.时区(“美国/东部”)
日期\u est=tz.本地化(日期)
#datetime.datetime(2020,5,4,0,0,tzinfo=)
打印(日期\u est.isoformat())
#2020-05-04T00:00:00-04:00

strtime
无法从格式化为“%Y-%m-%d”的时间自动了解时区,您必须将其包括在内,例如

from datetime import datetime
import pytz

# parse the string
datestring = '2020-05-04'
date = datetime.strptime(datestring, '%Y-%m-%d')

# add a timezone info
tz = pytz.timezone('US/Eastern')
date_est = tz.localize(date)
# datetime.datetime(2020, 5, 4, 0, 0, tzinfo=<DstTzInfo 'US/Eastern' EDT-1 day, 20:00:00 DST>)

print(date_est.isoformat())
# 2020-05-04T00:00:00-04:00
从日期时间导入日期时间
进口皮茨
#解析字符串
日期字符串='2020-05-04'
date=datetime.strtime(日期字符串,%Y-%m-%d)
#添加时区信息
tz=pytz.时区(“美国/东部”)
日期\u est=tz.本地化(日期)
#datetime.datetime(2020,5,4,0,0,tzinfo=)
打印(日期\u est.isoformat())
#2020-05-04T00:00:00-04:00

Erm,看来你刚刚做到了…?我的意思是,您在末尾追加了
GMT
。您想要的输出似乎有一个相对于UTC的时区偏移量(“-04:00”),但是您用“%Y-%m-%d”解析了一个日期时间字符串。时区信息应该从哪里来?传递到
strtime()
)的
数据[“活动开始日期”]
的值是多少?-04:00是格林尼治标准时间的时间可能正确,但只有您的本地时区正确。你想硬编码吗?那你为什么要写“我需要在字符串末尾附加GMT”,而实际上你不想附加它?呃,看起来你只是做了…?我的意思是,您在末尾追加了
GMT
。您想要的输出似乎有一个相对于UTC的时区偏移量(“-04:00”),但是您用“%Y-%m-%d”解析了一个日期时间字符串。时区信息应该从哪里来?传递到
strtime()
)的
数据[“活动开始日期”]
的值是多少?-04:00是格林尼治标准时间的时间可能正确,但只有您的本地时区正确。你想硬编码吗?那你为什么写“我需要将GMT附加到字符串的末尾”,而实际上你不想附加它?这仍然有效地将时区硬编码到代码中。@martineau,当然-我想你必须在某个地方定义它。除非你对运行脚本的机器进行设置,但这对我来说是不可预测的…@MrFuppes这很好用!非常感谢。我接受了答案。@chiqueu_Code:我想说,如果您确定输入数据的时区,您应该可以对其进行硬编码。但是,API应该严格使用UTC或提供时区信息(至少UTC偏移量)。这仍然有效地将时区硬编码到代码中。@martineau,当然-我想你必须在某个地方定义它。除非你对运行脚本的机器进行设置,但这对我来说是不可预测的…@MrFuppes这很好用!非常感谢。我接受了答案。@chiqueu_Code:我想说,如果您确定输入数据的时区,您应该可以对其进行硬编码。但是,API应严格使用UTC或提供时区信息(至少UTC偏移量)。