【发布时间】:2020-05-29 13:59:31
【问题描述】:
在 Python 中,我需要在没有时区信息的情况下将给定字符串时间戳的实际时间转换为不同的时区。我正在使用 pytz 来执行此操作。但我得到的只是给定的 DateTime,并附加了时区信息。
基准日期时间:2020-05-29 19:00:00(没有时区信息的字符串日期时间)
要求:当这个时间转换为(US Zipcode 90071) -0700时区时, 它应该返回“2020-05-29 12:00:00”,而不是“2020-05-29 19:00:00-0700”
代码:
import pytz
from datetime import datetime
from uszipcode import SearchEngine
from timezonefinder import TimezoneFinder
date_time_obj = datetime.strptime("2020-05-29 19:00:00", '%Y-%m-%d %H:%M:%S')
zip = "90071"
search = SearchEngine(simple_zipcode=True)
zipcode = search.by_zipcode(zip)
zipcode = zipcode.to_dict()
tf = TimezoneFinder(in_memory=True)
timezone = tf.timezone_at(lng=zipcode['lng'], lat=zipcode['lat'])
tz = pytz.timezone(timezone)
new_timestamp = tz.localize(date_time_obj)
new_timestamp_str = datetime.strftime(new_timestamp, '%m/%d/%Y %H:%M:%S')
但这会返回 2020-05-29 19:00:00.000000-0700。我需要检索一个 DateTime 对象/字符串,该对象/字符串在该时区中显示的实际时间没有附加到 DateTime 末尾的时区块。
【问题讨论】:
-
等等,你如何将
datetime转换为字符串?您发布的代码中缺少该部分。 -
@MarkRansom 用那部分更新了问题,
-
我不明白,如果格式没有指定,我不希望
strftime包含时区。 -
@MarkRansom 我只需要从 2020-05-29 19:00:00 减去 0700 并得到 2020-05-29 12:00:00。作为 DateTime 对象或字符串。
标签: python python-3.x python-2.7 datetime python-datetime