如何在 python 中最好地调整带有时区的时间戳?

Posted

技术标签:

【中文标题】如何在 python 中最好地调整带有时区的时间戳?【英文标题】:How do I best adjust a timestamp with a timezone in python? 【发布时间】:2016-09-10 23:39:30 【问题描述】:

我需要对我的 pandas 数据框中的日期进行操作,但我的代码有一个错误。具体来说,我正在从 csv 文件中导入一列时间戳

x['Created at']
0       2016-05-13 13:28:41 -0400
1       2016-05-13 05:11:18 -0400
3       2016-05-12 18:06:42 -0400
4       2016-05-12 16:06:24 -0400
5       2016-05-12 13:58:01 -0400
6       2016-05-12 03:30:27 -0400

然后我将此数据更改为日期时间。我正在通过pandas.to_datetime(df['date']) 执行此操作,但是当我执行此操作时,时间会偏移 4 小时。

x.Createdat
0      2016-05-13 17:28:41
1      2016-05-13 09:11:18
3      2016-05-12 22:06:42
4      2016-05-12 20:06:24
5      2016-05-12 17:58:01
6      2016-05-12 07:30:27

我假设这是因为时间戳末尾的-0400,但我无法找出解决此问题的最佳方法,因此我可以在我自己的时区汇总这些数据。

【问题讨论】:

【参考方案1】:

如果 -400 是您不需要或不想要的信息,那么只需将您对 pandas.to_datetime(df['date']) 的使用更改为 pandas.to_datetime(df['date'].apply(lambda x: x[:-6]),这将从字符串中删除 -400。不是最好和最强大的方法,但它会起作用。

如果您想使用 -400 但又想将其转换为不同的时区,请查看tz_localize,如以下答案所述:convert gmt to local timezone in pandas

另一个应该有帮助的工具是使用pytz:pytz - Converting UTC and timezone to local time

【讨论】:

以上是关于如何在 python 中最好地调整带有时区的时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

将UTC时间戳转换为熊猫中的本地时区问题

如何将字符串转换为带有时区的时间戳?

Python:如何将日期时间/时间戳从一个时区转换为另一个时区?

在带有 C 扩展名的 Postgres DB 中使用时区存储时间戳?

Python pytz 将时间戳(字符串格式)从一个时区转换为另一个时区

Python:如何在不知道 DST 是不是生效的情况下将时区感知时间戳转换为 UTC