当前位置: 首页 > 面试题库 >

了解时间增量

雷国兴
2023-03-14
问题内容

给定下面的python代码,请帮助我了解那里发生的事情。

start_time = time.time()
time.sleep(42)
end_time = time.time()

uptime = end_time - start_time

human_uptime = str(datetime.timedelta(seconds=int(uptime)))

所以我得到了start time和之间的区别end time,在第5行中,我通过强制转换将持续时间取整,现在又有什么进一步的解释?

我知道delta是什么意思(平均值或差值),但是为什么我必须传递seconds = uptime给deltatimedelta以及为什么字符串转换效果如此之好以至于我得到了HH:MM:SS


问题答案:

因为timedelta的定义如下:

class datetime.timedelta([days,] [seconds,] [microseconds,] [milliseconds,] [minutes,] [hours,] [weeks])

所有参数都是可选的,默认为0。

您可以轻松地通过可选参数说出“三天四毫秒”。

>>> datetime.timedelta(days=3, milliseconds=4)
datetime.timedelta(3, 0, 4000)
>>> datetime.timedelta(3, 0, 0, 4) #no need for that.
datetime.timedelta(3, 0, 4000)

对于str强制转换,它返回一个很好的格式化值,而不是__repr__提高可读性。从文档:

str(t)返回格式为[D day [s],] [H] H:MM:SS [.UUUUUU]的字符串,其中D表示负t。(5)

>>> datetime.timedelta(seconds = 42).__repr__()
'datetime.timedelta(0, 42)'
>>> datetime.timedelta(seconds = 42).__str__()
'0:00:42'

结帐文档:

http://docs.python.org/library/datetime.html#timedelta-
objects



 类似资料:
  • 问题内容: 我有3个div,如果我给出前两个div,则如果给出了,最后一个div应该移到下一行。如果我错了,请更正。 以下是我的html / css: 提前致谢。 问题答案: 该属性旨在在弹性项目之间分配容器中的自由空间。 它 不适 用于直接或精确调整弹性项目的大小。 从 规格: …确定当分配正的自由空间时,flex项目相对于flex容器中其余flex项目将增长多少。 因此,不会强迫物品包装。这是

  • 我需要能够将从存储在“日期时间”字段中的MySQL数据库中获取的数据转换为Java对象。 我遇到的问题是将本地时间偏移量添加到对象,我不需要它,因为日期时间已经以UTC格式存储在数据库中。所以当我运行以下代码时: 我得到: 我需要时间部分保持不变。 我找不到任何明显的解决问题的方法,所以我在这里错过了什么吗?

  • 研究了一种算法,该算法需要计算矩阵中连续1的最长数。提供的解决方案描述和解决方案如下: 蛮力方法非常简单。我们直接遍历给定矩阵中的每一条有效线:即水平、垂直、中间对角线上下的对角线、中间反对角线上下的反对角线。每次遍历过程中,如果遇到连续的1,我们会不断增加计数。我们会为遇到的任何不连续重置计数。在这样做的同时,我们还跟踪迄今为止发现的最大计数。 复杂性分析 时间复杂度:O(n^2)我们沿着整个矩

  • 问题内容: 我正在运行Django Debug Toolbar(Django调试工具栏)来分析我的网站,并试图弄清为什么某些视图需要这么长时间。关于查看我正在运行的查询以及它们花了我多少钱,这是非常有价值的,但是我不明白如何阅读时间面板。 我到处都在寻找关于此的一些文档,但是似乎什么也找不到。我应该提到我是一个自学成才的,相对较新的程序员,因此这些可能是有经验的程序员所熟悉的术语。 这是输出: 谁

  • 索引时间字段提升和查询时间提升 Lucene的FAQ似乎与javadoc冲突。(Lucene 4.9.0) 常见问题: 索引时间字段增强(field.set增强(增强))是一种表达类似于“此文档的标题价值是大多数文档标题的两倍”的方式。查询时间提升(query.setBoost(提升))是表达“我关心查询的这个子句上的匹配是关心查询的其他子句上的匹配的两倍”的一种方式。 如果您在每个文档上设置索引

  • 问题内容: 在Java应用程序中,我希望能够在操作开始时加上时间戳,并能够定期检查操作已经运行了多长时间。问题是:我不想受到网络时间协议移动时钟,管理员更改时间或任何可以突然调整一天中时间的影响。我想要单调增加的时间值。我相信这排除了java.util.Date,Time和Calendar。 JRE中是否存在某些单调增加的时间戳记的来源? 问题答案: 您是否考虑过使用System.nanoTime