问题标签 [leap-second]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - java tzupdater 为什么要添加闰秒?
有一些参考文献提到 Java 忽略了闰秒:
考虑到新引入的闰秒,一个 1 岁的 (java) 库如何正确执行 UTC 时间格式
然而,JRE Software 中的文档时区数据版本提到:
根据 IERS Bulletin C 49 的新闰秒 2015-06-30 23:59:60 UTC。
第 3 方 Java 库 Time4J 使用它自己的闰秒列表。
如果 Java 忽略了闰秒,为什么 Java 的 tzupdater 工具会添加闰秒?
java - Java 时间领先于 linux 时间(闰秒)
我已将 Linux 系统日期更改为 Sat Jun 30 23:50:00 2012。更改日期后,我正在运行一个简单的 java 程序来记录系统日期。问题是:Java 的日志记录比 Linux 系统时间早 25 秒。例如: Java 日志:2012-07-01 00:02:15 INFO Scheduler:19 - Sun Jul 01 00:02:15 GMT 2012 Linux 时间:Sun Jul 1 00:01:50 GMT 2012 两者都是 GMT!
我这样做是为了分析闰秒问题。我检查了 /etc/localtime 中闰秒的总数是 25。 zdump -v /etc/localtime | 59:60 | 厕所-l 25
我重新启动了系统并重新启动了 ntp 服务器,但仍然有 25 秒的差异!
我正在使用 SUSE Linux Enterprise Server 11 SP3 (x86_64) 和 JAVA 1.7
请帮我理解什么是错的?以及如何解决这个问题?
java - 如何获取当前TAI时间?
如何在 Linux 中使用 Java 或 C++ 获取当前 TAI 时间(以毫秒为单位)?
我需要这个的原因是能够在很长一段时间内(以年为单位)准确地获取时间戳,并且仍然能够比较它们,而不必担心闰秒。在闰秒期间可能会发生多次测量,并且所有测量都需要是明确的、单调递增的和线性递增的。这将是一个专用的 Linux 服务器。这是一个需要大约 0.5 秒精度的科学项目。
我目前不希望投资 GPS 计时器,并希望使用 NTP 连接 pool.ntp.org 以保持系统时钟正常运行。
我研究了以下解决方案:
Java 8 或 ThreeTen 项目 获得 TAIInstant 的唯一方法是使用 Instant 然后对其进行转换,根据规范,“根据 UTC-SLS,从 Instant 转换在闰秒附近不会完全准确。 " 这本身没什么大不了的(事实上,使用 UTC-SLS 也是可以接受的)。但是,在 Instant 类中使用 now() 似乎也只是 System.currentTimeMillis() 的包装,这让我觉得在闰秒期间,时间仍然会模棱两可,项目实际上不会给我 TAI 时间. Java 8 规范还规定:
使用 JSR-310 API 的 Java 时间刻度的实现不需要提供任何亚秒级精度的时钟,或者单调或平滑的时钟。因此,实现不需要实际执行 UTC-SLS 转换或以其他方式了解闰秒。
使用对/?timezone 这似乎可行,但是我不确定实现是否足够聪明以在闰秒期间继续工作,或者 System.currentTimeMillis() 是否甚至会给 TAI 时间。换句话说,底层实现是否仍然使用 UTC,从而在闰秒期间给出一个模棱两可的时间,然后将其转换为 TAI,或者使用正确/时区是否始终使用 System.currentTimeMillis() 与 TAI 一起工作(即即使在闰秒)?
使用 CLOCK_TAI 我尝试在 Linux 内核中使用 CLOCK_TAI 但在我的测试中发现它与 CLOCK_REALTIME 完全相同: 代码:
输出很简单:
使用 CLOCK_MONOTONIC这样做 的问题是,即使计算机重新启动,时间戳也需要保持有效和可比较。
java - 如何从 7 月添加的闰秒中找到即将发生的问题
今年 7 月 1 日将在日历中添加闰秒。我担心我们的应用程序堆栈可能即将产生影响,我们想先发制人。
Wikipedia 文章http://en.wikipedia.org/wiki/Leap_second列出了一些过去的问题,但没有一个与我的应用程序相关。
我们应该寻找什么来防止世界末日?
c++ - 在时间管理中管理闰秒
我刚刚得知本月底(2015 年 6 月)将添加闰秒。我对此有点害怕,因为我自己安排时间课程。我不确定它是否足够强大。
我创建了一个使用成员变量的类Instant
,该unsigned long long int
成员变量ms
是从01/01/1600
at开始的毫秒数0:00:00
。
当我想获取当前时间时,我调用这个函数:
我的第一个问题是:闰秒如何影响这个数字?是否已经在价值中考虑在内tv.tv_sec
?如何 ?
我的第二个问题是关于转换为人类可读格式的问题。我不在这里发布它,因为我的功能非常庞大(如果需要,我可以发布它),但想法如下:
- 我首先计算当天的秒数,然后计算分钟数和小时数;
- 我计算当天之前的天数;
- 然后我计算400年的周期数(周期过程),当前400年周期的100年周期数,4年当前周期的4年周期数;
- 从中,我推断出年份(是否闰)、月份、日期和星期几;
- 然后我检查是否激活了夏令时,并根据区域更新值(欧洲,2007 年之前的美国,2007 年之前的美国);
- 所有这些都没有考虑到从 1970 年开始增加的 25 个闰秒。
目前,我的班级不能说“我们30/06/2015
在23:59:60
”,因为我的秒数限制为59
. 但也因为我不知道如何管理它。什么是好方法?
java - 正确处理闰秒
在闰秒之前和闰秒期间,调用似乎new Date()
将返回 23:59:59 两次(一次在闰秒之前,一次在闰秒期间),而不是 23:59:59 和 23:59:60。
有没有办法(没有在应用程序中实现 NTP 客户端,或者检查时钟是否倒退或重复)来确定给定的秒是否是闰秒,以便正确呈现 23:59 :60 给用户?
就此而言,主机操作系统是否有任何挂钩来确定它是闰秒前还是闰秒后?
java - 闰秒持续时间
我需要在固定的日期时间在我的代码中安排一个任务。为此,我使用带有方法的 ScheduledExecutorServiceschedule(Runnable command, long delay, TimeUnit unit);
如何根据闰秒计算此延迟?
目前我使用Duration.between()
但它似乎不知道闰秒:
unix - 处理unix下的闰秒
我有一个库,它需要知道自上一个纪元以来的秒数。这需要跨越闰秒边界。使用户更容易使用的功能之一是以 unix 时间指定时间 - 这当然不考虑闰秒。如果我知道闰秒何时插入(或将插入)(或删除),这很容易处理。
除了保留硬编码表(或类似表)之外,是否有任何标准方法可以获取闰秒事件列表,这当然需要每两年更新一次?
ntp - 错误的闰秒 2015 年 12 月
我发现 2015 年 12 月在我的系统中插入了额外的闰秒。
查看 /var/log/messages 文件,我发现在 2015 年 6 月 30 日插入了一个闰秒,这是正确的,在 2015 年 12 月 30 日插入了另一个闰秒,这是一个错误。
我的内核版本和ntp:
内核:3.0.13-0.27-pae Ntp 版本:4.2.4p8
我如何知道系统中当前插入了多少闰秒?我正在使用ntp。
非常感谢你,贾维。