在Python中将PDT中的时间列表转换为UTC

时间:2018-01-12 06:36:59

标签: python timezone

我有一个包含大约400次系列时间的start_time列表,我将其转换为时间格式:

(2017, 10, 22, 15, 19, 23)
(2017, 10, 22, 15, 19, 35)
(2017, 10, 22, 15, 19, 35)
(2017, 10, 22, 15, 19, 35)
..
..
..

这次是在PDT。我想以UTC时区转换此列表。

我必须将列表转换为时间格式的代码:

y=[tuple(dparse(x).timetuple())[:6] for x in start_time]

我必须将此代码转换为UTC代码:

y_utc = [tuple(dparse(x).astimezone(pytz.utc).timetuple())[:6] for x in y]

使用此我收到错误:

TypeError: Parser must be a string or character stream, not tuple

我也尝试过使用摆锤:

y = [pendulum.parse(x, tz='US/Pacific') for x in start_time]
y_utc = [z.astimezone("UTC") for z in y

然后内核停止或者显示astimezone不可迭代。

所以我需要在utc时区的最终列表。

1 个答案:

答案 0 :(得分:0)

此尝试使用datetimepytz模块。首先将它们解析为“US / Pacific”,然后将它们简单地转换为UTC。此外,您需要解包元组(使用*),然后将它们提供给datetime构造函数。

from datetime import datetime
import pytz

time_stamps = [(2017, 10, 22, 15, 19, 23), (2017, 10, 22, 15, 19, 35)]

my_timezone = pytz.timezone('US/Pacific')

for time_stamp in time_stamps:
     date = datetime(*time_stamp).replace(tzinfo=my_timezone)
     print (date.astimezone(pytz.utc))