python - 为什么结果不是 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
解决方案
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)
推荐阅读
- javascript - 无法从“firebase.js”解析模块“firebase”:在项目中找不到 Firebase
- reinforcement-learning - 网格世界的深度 Q 学习
- node.js - 如何在 mongoose 中查找前 10 名最受欢迎和前 10 名最受欢迎的数据
- react-native - 多个反应原生动画与基于状态的复活?
- javascript - 根据标识值隐藏 DataTable 中的编辑和删除按钮
- javascript - 如何从数据库查询创建动态下拉列表?
- javascript - testing-library/react 如何在动态生成错误消息时测试无效输入
- express - 使用 websockets 从工作服务器更新数据?
- sas - 如何在SAS中打印带有列标签的前10行
- c# - 堆栈和元素(初学者 C#)