以秒为单位转换的时间戳值与python中的原始时间戳值不一致

以秒为单位转换的时间戳值与python中的原始时间戳值不一致,python,timestamp,datetime-format,seconds,Python,Timestamp,Datetime Format,Seconds,我有一个字符串时间戳。我想把它转换成秒,然后再把秒转换成时间戳。因此,我首先将字符串转换为时间戳,然后计算秒数。我再次将这些秒转换为时间戳 但转换后的时间戳与原始时间戳不匹配。我如何解决这个问题 我使用以下代码进行此转换: import datetime import pandas as pd def string_to_datetime(string): dv = [string] dv_series = pd.Series(dv) dv_to_datetime

我有一个字符串时间戳。我想把它转换成秒,然后再把秒转换成时间戳。因此,我首先将字符串转换为时间戳,然后计算秒数。我再次将这些秒转换为时间戳

但转换后的时间戳与原始时间戳不匹配。我如何解决这个问题

我使用以下代码进行此转换:

import datetime
import pandas as pd


def string_to_datetime(string):
    dv = [string]

    dv_series = pd.Series(dv)
    dv_to_datetime = pd.to_datetime(dv_series)
    dv_to_datetime_list = list(dv_to_datetime)

    return dv_to_datetime_list[0]


timestamp = ['2020-06-12T08:33:14']

timestamp = string_to_datetime(timestamp[0])
print('timestamp:')
print(timestamp)

timestamp_in_seconds = float((timestamp - datetime.datetime(1970, 1, 1)).total_seconds())

print('timestamp in seconds:')
print(timestamp_in_seconds)

print('Again converted to timestamp:')
print(datetime.datetime.fromtimestamp(timestamp_in_seconds))
上述代码的输出如下:

timestamp:
2020-06-12 08:33:14
timestamp in seconds:
1591950794.0
Again converted to timestamp:
2020-06-12 14:33:14

我有两个解决办法。也许这对以后的人会有帮助

solution_1 = datetime.datetime.fromtimestamp(timestamp_in_seconds, tz=pytz.UTC)


solution_2 = datetime.datetime.utcfromtimestamp(timestamp_in_seconds)

时区信息在转换回原始时间戳的过程中非常重要。

fromtimestamp()
可能采用UTC的历元,并根据您当前的时区进行调整。我认为您需要
打印(datetime.datetime.utcfromtimestamp(timestamp_in_seconds))
查看原始与时区感知。与
pandas
datetime不同,Python的datetime具有默认假定本地时间的属性(有时令人困惑)(天真的datetime情况)。如果未定义时区/UTC偏移量,pandas将采用UTC。Python的datetime默认情况下将假定您需要本地时间。虽然您的解决方案_1是正确的,但另一个实际上是错误的,但显示了您的期望,只是让人困惑。最好使用例如
datetime.datetime.fromtimestamp(timestamp_in_seconds,tz=datetime.timezone.utc)