Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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 time.time()和;夏时制;_Python_Time_Save_Dst - Fatal编程技术网

python time.time()和;夏时制;

python time.time()和;夏时制;,python,time,save,dst,Python,Time,Save,Dst,当运行python(Windows或Linux)的计算机的时钟 自动更改并调用time.time() 我已经读到,当时钟手动更改为过去的某个值时,time.time()的值将更小。time.time()返回基础库返回的值。Python使用time(..)或gettimeofday(..,nullptr)(取决于系统上可用的内容) 在这两种情况下,都返回UTC。例如: 函数的作用是:返回从历元开始的时间值(以秒为单位) 在Matt的有效评论之后,我必须添加定义,该定义明确指出time返回UTC

当运行python(Windows或Linux)的计算机的时钟 自动更改并调用
time.time()

我已经读到,当时钟手动更改为过去的某个值时,
time.time()
的值将更小。

time.time()
返回基础库返回的值。Python使用
time(..)
gettimeofday(..,nullptr)
(取决于系统上可用的内容)

在这两种情况下,都返回UTC。例如:

函数的作用是:返回从历元开始的时间值(以秒为单位)

在Matt的有效评论之后,我必须添加定义,该定义明确指出
time
返回UTC时间

时代: 从历史上看,UNIX系统时间的起源被称为 “1970年1月1日格林尼治标准时间00:00:00”。格林威治标准时间实际上不是一个 国际标准界认可的术语;所以,, 这一术语“历元”用于缩写对实际事件的引用 标准、协调的世界时

要证明历元是相同的,请选中此项:

import time
a = time.gmtime(secs=0)
# time.struct_time(tm_year=2015, tm_mon=9, tm_mday=9, tm_hour=1, tm_min=3, tm_sec=28, tm_wday=2, tm_yday=252, tm_isdst=0)
b = time.localtime(secs=0)
# time.struct_time(tm_year=2015, tm_mon=9, tm_mday=9, tm_hour=3, tm_min=1, tm_sec=28, tm_wday=2, tm_yday=252, tm_isdst=1)
如果参数
secs
为0,则这两个函数都使用从
time.time()
返回的值。在我的例子中,
tm_isdst
对于localtime设置为true,对于gmtime设置为false(表示自纪元以来的时间)

编辑:您从哪里读到该值会更小?

引用

虽然此函数通常返回非递减值,但它可以 如果系统时钟已关闭,则返回比上一次调用更低的值 在两次通话之间后退

调整系统时钟值的内容取决于平台。但是,根据注释,这不应该包括基于DST的更改,因为Python支持的所有操作系统都提供系统调用来检索UTC中的当前时间(DST只影响本地时间与UTC的关系)

如果这不是一个足够好的保证,您可能会更喜欢,它保证永远不会倒退-但是,请注意,它附带了这个警告(并决定这对您的用例是否重要):

返回值的引用点未定义,因此 连续调用的结果之间的差异是有效的

time.time()
状态:

以浮点数形式返回自历元以来的时间(秒)

此处所指的特定纪元是,即1970年1月1日午夜UTC

由于它始终基于UTC,因此不受更改计算机时区的影响,也不受计算机时区进入或退出夏令时的影响

尽管函数确实依赖于底层实现来提供值,但这些实现总是以UTC为单位返回值,而与操作系统无关


特别是在Windows上,它最终调用OS函数,该函数返回UTC值。它不受时区选择或时区内DST更改的影响。

试试看会发生什么。在Windows下更改时钟是否会更改UTC值或我的语言环境时间值?编辑:Mhh猜测更改时区就可以了?相关:更改时钟(通过控制面板、命令行或操作系统功能)通常将本地时间作为输入,但最终必须先将其转换为UTC,然后再通过Windows的
SetSystemTime
调用进行设置。操作系统仅在内部跟踪UTC。本地时间转换用于输入、显示和写入BIOS等。请注意,更改时区不会更改正在跟踪的UTC值。它仅更改转换期间使用的分区。表示utc和本地时间选项都可以由Linux和Windows使用。Windows更可能将硬件时钟设置为本地时间。如果仅更改了DST设置,则不清楚
GetSystemTimeAsFileTime()
(由
time.time()
使用)返回的是什么(如果可能:相同的本地时间,不同的DST设置意味着不同的utc偏移量,因此可能是不同的utc时间,否则系统将不一致)。Windows系统时间也是以UTC表示的。只有BIOS被写入本地时间。转换在启动时自动发生,并且每当本地时间发生变化时(对于DST、NTP或用户修改),但UTC是操作系统跟踪的时间,并且对于DST或其他时区变化,转换不会发生变化。请注意,文档清楚地说明返回值是UTC。@MattJohnson:(1)我被msdn中的谎言咬了很多次,直到在相关系统上测试了相应的声明,我才相信它(2)尽管返回值(类似于POSIX时间戳)不在任何时区。如果更改DST设置(不是转换,而是设置,例如,在保持相同本地时间的同时设置了不同的本地时区),我猜不出会发生什么。更改时区与更改时间无关。更改时区时,通过将系统时间转换为新时区,本地时间将自动更新。因此,当只更改时区时,不能保持相同的本地时间(除非这两个时区恰好与当前时间对齐)。换句话说,如果我的时钟是当地时间7:00,我将时区从太平洋改为东部(DST生效),我的当地时钟现在将改为10:00,因为14:00的UTC基本时间没有改变(除了正常的向前滴答声)。@MattJohnson:我明确地说,当地时间是保留的。这不是那么简单。UTC时间和操作系统认为的UTC时间可能不同。当然,如果你说的是时钟同步,以及它的同步程度。但这不是我们在这里讨论的…我在谈论可能的差异,无论出于什么原因。让我们先假设一下