Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.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 为什么gmtime和utcnow datetime之间相差1小时?_Python_Datetime - Fatal编程技术网

Python 为什么gmtime和utcnow datetime之间相差1小时?

Python 为什么gmtime和utcnow datetime之间相差1小时?,python,datetime,Python,Datetime,如果我这样做: >>> print datetime.fromtimestamp(time.mktime(time.gmtime())) - datetime.utcnow() 它打印: 0:59:59.618000 为什么utcnow()与我的本地时间相差4小时,gmtime()相差5小时 这将打印-5和: print int(-time.timezone/60/60) 所有这些不都应该是UTC时间吗?GMtime有夏令时调整,UTC没有 GMtime有夏令时调整,UT

如果我这样做:

>>> print datetime.fromtimestamp(time.mktime(time.gmtime())) - datetime.utcnow()
它打印:

0:59:59.618000
为什么utcnow()与我的本地时间相差4小时,gmtime()相差5小时

这将打印
-5
和:

print int(-time.timezone/60/60)

所有这些不都应该是UTC时间吗?

GMtime有夏令时调整,UTC没有

GMtime有夏令时调整,UTC没有

来自:

UTC是一个没有夏令时的时区,但仍然是一个时区 过去没有配置更改

始终以UTC为单位测量和存储时间

如果您需要记录时间的位置,请将其单独存储。 不要存储本地时间+时区信息

而GMtime有一个夏令时调整

来自:

UTC是一个没有夏令时的时区,但仍然是一个时区 过去没有配置更改

始终以UTC为单位测量和存储时间

如果您需要记录时间的位置,请将其单独存储。 不要存储本地时间+时区信息


虽然GMtime有夏令时调整,但Python中的
time.GMtime()
datetime.utcnow()
之间没有1小时的差异。它们都表示UTC时区中的相同时间
time.gmtime()
不代表
欧洲/伦敦
时区中的时间。UTC时区中没有DST转换。utc时区中的utc偏移量始终为零

你的代码错了。将
time.mktime()
time.gmtime()
一起使用作为输入是不正确的,除非您的本地时区是UTC。您的本地时区不是utc,
time.timezone!=0

这不是UTC时间吗

  • time.gmtime()
    将UTC时间作为时间元组返回
  • datetime.utcnow()
    将UTC时间作为原始
    datetime
    对象返回
  • time.mktime()
    接受本地时间并返回“自历元起的秒数”
  • datetime.fromtimestamp()
    接受“从纪元开始的秒数”,并将本地时间作为原始日期时间对象返回
要比较
time.gmtime()
datetime.utcnow()

差异不是零,因为时间元组不存储微秒,否则无论本地时区如何,两个函数都返回相同的时间


如果您想查找本地时区的utc偏移量,请参见。

Python中的
time.gmtime()
datetime.utcnow()
之间没有1小时的差异。它们都表示UTC时区中的相同时间
time.gmtime()
不代表
欧洲/伦敦
时区中的时间。UTC时区中没有DST转换。utc时区中的utc偏移量始终为零

你的代码错了。将
time.mktime()
time.gmtime()
一起使用作为输入是不正确的,除非您的本地时区是UTC。您的本地时区不是utc,
time.timezone!=0

这不是UTC时间吗

  • time.gmtime()
    将UTC时间作为时间元组返回
  • datetime.utcnow()
    将UTC时间作为原始
    datetime
    对象返回
  • time.mktime()
    接受本地时间并返回“自历元起的秒数”
  • datetime.fromtimestamp()
    接受“从纪元开始的秒数”,并将本地时间作为原始日期时间对象返回
要比较
time.gmtime()
datetime.utcnow()

差异不是零,因为时间元组不存储微秒,否则无论本地时区如何,两个函数都返回相同的时间

如果您的目的是查找本地时区的utc偏移量,请参阅

#!/usr/bin/env python
import time
from datetime import datetime

print(abs(datetime(*time.gmtime()[:6]) - datetime.utcnow()))
# -> 0:00:00.524724