首页 > 解决方案 > 为什么结果不是 00:00:XX?

问题描述

我预计像 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

标签: pythontime

解决方案


time.time()将为您提供自 1.1.1970 以来的 UTC 秒数。

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

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

您可能想要的是time.gmtime()并以 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)

推荐阅读