Python 带时区/不带时区信息的时间戳、日期时间戳、Unix时间戳之间的转换
我使用Python3.6创建了以下测试用例,以了解DateTime到Pandas时间戳、Unix时间戳和DateTime之间的转换,有时区信息和无时区信息Python 带时区/不带时区信息的时间戳、日期时间戳、Unix时间戳之间的转换,python,pandas,datetime,unix-timestamp,Python,Pandas,Datetime,Unix Timestamp,我使用Python3.6创建了以下测试用例,以了解DateTime到Pandas时间戳、Unix时间戳和DateTime之间的转换,有时区信息和无时区信息 from unittest import TestCase import datetime from datetime import timezone from pytz import timezone import time import pandas as pd def test_date_with_timestamp_method(
from unittest import TestCase
import datetime
from datetime import timezone
from pytz import timezone
import time
import pandas as pd
def test_date_with_timestamp_method(self):
hkzone = timezone('Hongkong')
dt_with_tz = datetime.datetime(2017, 9, 24, tzinfo=hkzone)
dt_without_tz = datetime.datetime(2017, 9, 24)
uts_with = dt_with_tz.timestamp()
uts_without = dt_without_tz.timestamp()
self.assertNotEqual(uts_without, uts_with)
pd_with = pd.Timestamp(dt_with_tz)
pd_without = pd.Timestamp(dt_without_tz)
pd_unix_with_tz = pd_with.value // 10 ** 9
pd_unix_without_tz = pd_without.value // 10 ** 9
self.assertEqual(uts_with, pd_unix_with_tz)
self.assertEqual(uts_without, pd_unix_without_tz)
我想问,为什么这一主张失败了?其结果是
断言错误:1506182400.0!=1506211200
# convert back to datetime
pd_dt_with_tz = pd_with.to_pydatetime()
pd_dt_without_tz = pd_without.to_pydatetime()
self.assertEqual(pd_dt_with_tz, dt_with_tz)
self.assertEqual(pd_dt_without_tz, dt_without_tz)
这条线呢
self.assertEqual(pd_dt_无_tz,dt_无_tz)
将导致此错误。
断言错误:datet[16个字符]7,9,24,0,46,tzinfo=)!=datet[16个字符]7,9,24,0,0,tzinfo=)
所以我可以说,在将时区信息转换为时间戳之前,始终将其放回Datetime对象是最佳实践吗
在没有时区信息的情况下,这两个断言是否可能成功