我在 Excel 中输入了一个时间表。计算结果在我的字段中添加了一些时间分数,因此 0:13:13 实际上是 0:13:13:1282
如何才能获得不包含毫秒部分的准确时间?
答案1
尝试将你的计算包装在一个MROUND
函数中,以四舍五入到最接近的秒数,例如
=MROUND(your_calc,"0:00:01")
或者你可以舍去向下功能FLOOR
类似
=FLOOR(your_calc,"0:00:01")
答案2
这可能是因为 Excel 将时间戳存储为“OLE 自动化日期”。
来自 .NETDateTime.ToOADate
文档:
OLE 自动化日期以浮点数的形式实现,其整数部分是 1899 年 12 月 30 日午夜之前或之后的天数,小数部分表示当天的时间除以 24。例如,1899 年 12 月 31 日午夜用 1.0 表示;1900 年 1 月 1 日上午 6 点用 2.25 表示;1899 年 12 月 29 日午夜用 -1.0 表示;1899 年 12 月 29 日上午 6 点用 -1.25 表示。
基本 OLE 自动化日期为 1899 年 12 月 30 日午夜。最小 OLE 自动化日期为 0100 年 1 月 1 日午夜。最大 OLE 自动化日期与 相同
DateTime.MaxValue
,即 9999 年 12 月 31 日的最后一刻。
在 PC 中处理的浮点数容易出现或多或少严重的舍入误差,并出现一些最坏情况的分数。
一天24 * 60 * 60 = 86400
总共有几秒。
(13 * 60 + 13) / 86400 = 0,00917824074074
(13 * 60 + 13 + 0,1282) / 86400 = 0,00917972453704
如您所见,这些数字非常相似,仅从小数点后 6 位开始有所不同。
答案3
要简单地丢弃毫秒部分,B1进入:
=TIMEVALUE(LEFT(A1,LEN(A1)-5))
并将时间格式应用于B1