Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带时区/不带时区信息的时间戳、日期时间戳、Unix时间戳之间的转换_Python_Pandas_Datetime_Unix Timestamp - Fatal编程技术网

Python 带时区/不带时区信息的时间戳、日期时间戳、Unix时间戳之间的转换

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(

我使用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(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对象是最佳实践吗

在没有时区信息的情况下,这两个断言是否可能成功