为什么 datetime.utcnow().timestamp() 在同一环境和终端中为 Python 和 IPython 返回不同的值

Why does datetime.utcnow().timestamp() returns different values for Python and IPython in the same environment and terminal

提问人:Skylar Saveland 提问时间:1/8/2018 最后编辑:Skylar Saveland 更新时间:1/10/2018 访问量:5947

问:

在 IPython 中:

Python 3.6.2 (default, Sep  4 2017, 13:34:02) 
Type 'copyright', 'credits' or 'license' for more information
IPython 6.2.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]: datetime.utcnow().timestamp()
Out[1]: 1515396403.049774

在 Python 中:

Python 3.6.2 (default, Sep  4 2017, 13:34:02) 
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> datetime.utcnow().timestamp()
1515425220.215077
>>> 

IPython 的结果似乎是我的时区,而不是 UTC。

编辑:不调用返回的值在两个终端中是相同的。为什么会这样?.timestamp().utcnow()

编辑2:

在常规 Python 提示符中,和 的值不同。datetime.utcnow().timestamp()datetime.utcnow().replace(tzinfo=timezone.utc).timestamp()

Python 3.6.2 (default, Sep  4 2017, 13:34:02) 
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.42)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime, timezone
>>> datetime.utcnow().replace(tzinfo=timezone.utc).timestamp()
1515548420.130655
>>> datetime.utcnow().timestamp()
1515577235.982597

在 IPython 中,这些值是相同的。

编辑3:

在 IPython 上并返回相同的内容。在 Python 中,返回我的本地时间。nowutcnownow

In [4]: datetime.utcnow()
Out[4]: datetime.datetime(2018, 1, 10, 1, 44, 55, 496083)

In [5]: datetime.now()
Out[5]: datetime.datetime(2018, 1, 10, 1, 45, 53, 811077)

蟒:

>>> datetime.datetime.now()
datetime.datetime(2018, 1, 9, 17, 46, 29, 754642)
>>> datetime.datetime.utcnow()
datetime.datetime(2018, 1, 10, 1, 46, 32, 865136)
python 日期时间 ipython UTC

评论

2赞 Ayush Gupta 1/8/2018
没有结果是什么?.timestamp()
1赞 Skylar Saveland 1/10/2018
@AyushGupta 有趣的是,utcnow() 在两个提示中返回相同的结果,而没有 !这是什么意思?timestamp()
0赞 Mark Ransom 1/10/2018
来自文档:“假定 Naive datetime 实例表示本地时间,此方法依赖于平台 C 函数来执行转换。我想说的是,IPython 对你的时区感到困惑。mktime()
0赞 Ayush Gupta 1/10/2018
@Skylar可以在两个平台上发布 utcnow() 的结果
2赞 Mark Ransom 1/10/2018
正如我所说,IPython 对您的时区感到困惑 - 它认为您使用的是 UTC。否则,将返回不同的结果。nowutcnow

答: 暂无答案