首页 > 解决方案 > 在 Python 中转换时间戳字符串的问题

问题描述

我有一个带有时间戳的数据集,格式如下:

`'4/17/2020 5:55:00 AM'`

请注意,YYYY 和 HH字段之间有2 个空格。原始时间在“美国/东部”时区。我正在尝试将其转换为IST (Indian Standard Time)。这应该是pytz的“亚洲/加尔各答”

下面的代码不起作用,我已经尝试了多个版本。即使转换为UTC也失败了。代码块是:

`
est_ts = '4/17/2020 5:55:00 AM'
est = pytz.timezone('US/Eastern')
ist = pytz.timezone('Asia/Kolkata')
print(dt.datetime.strptime(est_ts, '%m/%d/%Y  %I:%M:%S %p').astimezone(ist).strftime('%Y-%m-%d %H:%M:%S'))
`

这给出了以下输出:

`2020-04-17 07:25:00`

虽然正确的输出应该是:

`2020-04-17 15:25:00`

这段代码有什么问题?非常感激。

标签: pythonpython-3.xdatetimedatetime-formatpython-datetime

解决方案


您首先需要localize原始时间戳,以便您可以normalize到所需的位置:

import datetime as dt
import pytz

est_ts = '4/17/2020 5:55:00 AM'
est = pytz.timezone('US/Eastern')
ist = pytz.timezone('Asia/Kolkata')

est_dt = est.localize(dt.datetime.strptime(est_ts, '%m/%d/%Y  %I:%M:%S %p'))
ist_dt = ist.normalize(est_dt.astimezone(ist))

print(ist_dt.strftime('%Y-%m-%d %H:%M:%S'))
#2020-04-17 15:25:00

推荐阅读