Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.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 为什么结果不是00:00:XX?_Python_Time - Fatal编程技术网

Python 为什么结果不是00:00:XX?

Python 为什么结果不是00:00:XX?,python,time,Python,Time,我以为是00:00:0X,但是09:00:0X出来了,我该怎么做才能得到00:00:0X呢 import time start = input("Enter를 누르면 타이머를 시작합니다.") begin = time.time() while True: time.sleep(1) count = time.time() result = time.localtime(count - begin) print(count - begin

我以为是00:00:0X,但是09:00:0X出来了,我该怎么做才能得到00:00:0X呢

import time

start = input("Enter를 누르면 타이머를 시작합니다.")
begin = time.time()

while True:
    time.sleep(1)
    count = time.time()
    result = time.localtime(count - begin)
    print(count - begin)
    print(time.strftime('%I:%M:%S', result))
结果:

1.0102884769439697
09:00:01
2.0233511924743652
09:00:02
3.0368154048919678

它显示09:00:00,因为您处于UTC+9时区。例如,我在UTC+1(法国)时,它为我显示01:00:00。因此,根据运行代码的位置,代码将有不同的输出

要删除此时区约束,只需使用
datetime.timedelta

begin = time.time()

while True:
    time.sleep(1)
    count = time.time()

    print(datetime.timedelta(seconds=round(count - begin)))
输出:

0:00:01
0:00:02
0:00:03
0:00:04
0:00:05
将提供自1970年1月1日以来的秒数(UTC)

因此,
begin
是一个巨大的数字,
count
也将是一个巨大的数字+大约1。减去这些将得到大约1

如果您将此消息传递给
time.time()
您将得到1.1.1970加1秒。转换为本地时间()将为您提供任何时区偏移量。显然+9小时

您可能需要的是24小时格式的文件和输出。这会有用的

import time

start = input("Enter를 누르면 타이머를 시작합니다.")
begin = time.time()

while True:
    time.sleep(1)
    count = time.time()
    result = time.gmtime(count - begin)
    print(count - begin)
    print(time.strftime('%H:%M:%S', result))
但它在语义上是不正确的。如果减去2个日期,结果是时间跨度,而不是日期。有什么区别

如果有人问,你多大了,你看一下当前年份,然后减去出生年份。然后你说“我25岁了”。你不会加上1.1.1970,然后说“我1995岁了”

因此,从语义上讲,下面的内容要好得多:

import time
from datetime import timedelta

start = input("Enter를 누르면 타이머를 시작합니다.")
begin = time.time()

while True:
    time.sleep(1)
    count = time.time()
    timespan = timedelta(seconds=count - begin)
    print(timespan)

你在哪个时区?如果你在日本,UTC+9,你会看到当地时间的转换。在我看来,这就像韩语
datetime.timedelta(seconds=count-begin)
将时差转换为当地时间很奇怪:你会在1970年1月1日得到一个时间戳,n秒。如前所述,使用您的本地时区偏移。如上所述,使用
timedelta
。这会有所帮助