(注:虽然相关的,这个挑战不是重复这一个,因为它需要自动确定闰秒,而不是硬编码的时间,而不是重复这一块,因为大部分的困难来自于确定时间没有闰秒歪斜,这是大多数时间API默认情况下都不会执行的操作。因此,解决方案看上去可能与针对其中任一挑战的解决方案有所不同。)
我们即将到2016年底,但所需时间将比大多数人期望的稍长。因此,这是今年庆祝我们获得第二名的挑战。
以UTC输出当前时间,以小时,分钟,秒为单位。(例如,正午的合法输出格式应包括12:00:00
和[12,0,0]
;此处的格式并不重要。)
但是,这有个不同之处:您的程序必须适当处理过去和将来的leap秒。这意味着您的程序将必须从一些在线或自动更新/可更新的源中获取of秒列表。如果愿意,您可以连接到Internet以获得此信息。但是,您只能连接到此挑战之前的URL(即,不能从其他位置下载程序的一部分),并且您不能使用该连接来确定当前时间(特别是:即使尝试访问,您的程序也必须运行)互联网返回的页面最多会过时24小时)。
当前大多数操作系统的默认API将使时间偏移leap秒左右,以便将它们从可能会造成混淆的程序中隐藏起来。因此,此挑战的主要困难是找到一种方法或API来撤消该问题,并找出UTC中真正未修改的当前时间。
从理论上讲,如果您的程序在无限快速的计算机上运行,则它应该是完全准确的,并且不得有意地花费超过零的时间来运行。(当然,实际上,您的程序将在不完美的计算机上运行,因此可能不会立即运行。您不必担心会导致结果无效,但不必依赖它来确保程序的正确性。 )
无论系统时钟设置为哪个时区,您的程序都必须运行。(但是,它可能会要求操作系统或环境提供有关正在使用哪个时区的信息,并可能假定答复是正确的。)
作为一个 代码高尔夫球,最短的程序将获胜。祝好运!