好吧,这听起来很疯狂:我相信所有的时钟都晚了 30 秒。
让我们先澄清一些事情:这与时区无关,也与闰秒无关。这与时钟同步无关,也与相对论或物理学的任何晦涩角落无关。我说的是日常时钟。你家里可能有这些,比如我桌子上的这个:
或者是位于伦敦的这个:
(图片来自维基百科)
或者甚至是手机上的时钟!也许它们都被正确地设置为非常精确的参考时钟,但在这里我会争辩说它们仍然晚了 30 秒。换句话说:
如果提前三十秒就更准确了。
你在忙什么?
上述所有时钟都有一个共同点:它们不显示秒。它们会截断到最接近的整分钟,对吗?因此,当实际是14:15:45
时,他们会显示14:15
。当实际时间从14:15:59
变为14:16:00
时,您的时钟就会从14:15
更改为14:16
。
他们应用了地板功能!
好的,太好了。现在听我说完!让我们计算常用(截断)时钟与精确当前时间之间的平均误差。
import datetime import numpy as np import matplotlib.pyplot as plt import matplotlib.dates as mdates # A datetime array from 14:00:15pm for 300 seconds true_time = np.array([datetime.datetime(2024, 12, 20, 14, 00, 15) + datetime.timedelta(seconds=i) for i in range(300)]) # The clock truncates seconds shown_time = [t.replace(second=0) for t in true_time] # The clock error is the shown time minus the true time error = [dt.total_seconds() for dt in (shown_time - true_time)] fig, ax = plt.subplots(figsize=(10, 3.5)) ax.plot(true_time, error, label="clock error", color="teal") ax.hlines(np.mean(error), xmin=true_time[0], xmax=true_time[-1], label="average", linestyle="--", color="orange") ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M')) ax.set_ylim([-60, 60]) ax.set_title("A normal clock") ax.legend()
- 有时误差为 1 或 2 秒,例如时钟显示
14:02
而实际上是14:02:01
- 有时错误几乎是 60 秒,例如时钟显示
14:02
而实际上是14:02:57
因此,截断时钟的平均误差为 30 秒。让我们先理解一下这一点:时钟的平均误差是 30 秒。如果时钟四舍五入到最接近的分钟而不是截断,则平均误差将为 0。因此所有时钟都晚了 30 秒!
当然,同样,所有显示秒但不显示毫秒的时钟都会晚半秒。
# The rounding clock! aka +30s shown_time = [(t + datetime.timedelta(seconds=30)).replace(second=0) for t in true_time] # The clock error is the shown time minus the true time error = [dt.total_seconds() for dt in (shown_time - true_time)] fig, ax = plt.subplots(figsize=(10, 3.5)) ax.plot(true_time, error, label="clock error", color="teal") ax.hlines(np.mean(error), xmin=true_time[0], xmax=true_time[-1], label="average", linestyle="--", color="orange") ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M')) ax.set_ylim([-60, 60]) ax.set_title("A rounding clock") ax.legend()
这只是一个约定
但这只是一个约定!截断、四舍五入甚至上限都是有效的,只要我们选择其中一种并坚持下去。按照你的逻辑,只要星期一中午过一秒,我们就应该说今天是星期二。
嗯……有点。
如果我们四舍五入几年、几个月和几天,那会很奇怪,这是肯定的。我认为大多数人将这些音阶视为音程。换句话说,七月是一段时间,有开始,也有结束。年、世纪、季节也是如此。我们在它的里面或外面。
当前小时的当前分钟是否相同?我不太确定。
基本上我认为时钟的舍入比地板更有用。当您试图计算“距离下一次会议还有多长时间?”而您的下一次会议是在中午时,这一点尤其明显。如果是 11:55,你通常会在心里减去并得出结论:会议还有 5 分钟。无论如何,我自己总是这样做!但根据现有信息,最可能的估计实际上是 4’30″!
如果您有一个四舍五入的时钟,则 5 分钟是正确的估计。
事实上,当我们从年、月、日一直到不同的时间尺度,直到达到小时时,我们就开始截断了!几点钟!例如:如果现在是10:43
,而您被问及时间(出于某些上下文适当的原因),您只回答了几个小时,您会说现在是 11 点!就我个人而言,如果时钟显示超过10:30
内容,我绝不会说现在是 10。不过,我意识到这在其他文化中可能非常不同!我很有兴趣了解不同文化如何用语言来近似时间。
因此,看看不同的时间尺度以及我在心理上如何看待它们:
- 年:截断。如果完整日期中有
2019
,我会说“今年是 2019 年”——一直到最后。在 2019 年 9 月说“现在是 2020 年了”真是太奇怪了。 - 月:截断。一直到二月都是一月。
- 天:截断。如果已经过了午夜而我还没有睡觉,那就有点奇怪了。明天是今天吗?或者是后天?我认为总的来说,我们还没有完全弄清楚这一点。没关系。有点像“下周五”在周四变得模棱两可。有些文化使用 24:00 以后的时间,例如 25:30 来表示午夜过后一小时半,我认为这很可爱!
- 时间:那时我在精神上转向四舍五入!
15:48
的时候我确实感觉已经差不多16:00
了。 - 分钟:
15:48:57
,我绝对感觉现在是15:49
!但由于某种原因,时钟切换回地板!但我们在心理上是圆的!这就是为什么我觉得所有时钟都晚了 30 秒:因为截断约定与我在分钟尺度上的直觉不符。 - 秒及以下:绝对四舍五入。
请有人告诉我我没有疯🙃
原文: https://victorpoughon.fr/all-clocks-are-30-seconds-late/