`

很想知道哪个语言会最先处理"闰秒"问题

阅读更多
不知道各大语言 会不会加入对闰秒的处理

如果要加入的话 我觉得ruby和java 应该很快就会行动吧

==========
补充一下 : 我是指 2008年最新增加的这个闰秒

分享到:
评论
24 楼 yananay 2009-01-04  
如果某一天地球突然南北极调转了怎么办呢?
如果某一天世界大战爆发了怎么办呢?
如果某一天地球毁灭了怎么办呢?
如果某一天异形进攻地球怎么办呢?
如果。。
如果。。

我想楼主应该加入 java 标准委员会,去着手解决这一系列艰巨而有深远意义的重大课题。

元旦快乐!
23 楼 dazuiba 2009-01-04  
进来之前,还从来没听说过 “闰秒”这一说。

被楼主科普了。



22 楼 toostupid 2009-01-03  
秒是怎么定义的?
硬件如何秒准?
年又怎么定义的?
我不太懂这个话题,不过总感觉似乎...没什么好办法完全解决。
21 楼 cqwonder 2009-01-02  
cqwonder 写道
fins 写道
cqwonder 写道

这是一个典型的自以为高深的伪问题。 任何一种语言都不会处理“闰秒”! 以Java为例: 1、getTime得到从1970年1月1日开始计算到 Date 对象中的时间之间的毫秒数。 2、System.currentTimeMillis()产生一个当前的毫秒,这个毫秒是自1970年1月1日0时起的毫秒数。 闰秒在哪儿处理?是在 毫秒数转换为时间 的时候处理,还是获取毫秒数的时候处理? 对任何一种语言来讲,它都只能按照它所能得到的数值按照固定的算法转换为时间,至于它得到的数值是否精确,是否处理过闰秒了,对语言本身来讲,都不是它应该关心的问题。 如果真的有哪种语言去处理闰秒,那可能就和网页代码中掺入sql语句一样难看,不是你这一层该管的事儿啊!!! (千年虫为什么要管?不用我解释了吧。。。 )


你这就是典型的自以为是的回答,
你这种总是以"上帝视角"说话的人实在让我很无奈.


元旦加班,不爽,见谅!

知道调整闰秒时授时中心是怎么发送时间的吗?它会这样发送:23:59:59 23:59:60 0:0:0……

语言这一层所要做的事情仅仅是:保证不把23:59:60认为是一个错误的值就行了

任何一种语言,语言,语言啊,它怎么可能去处理闰秒,还是那一句话:不是你这一层该管的事儿啊!!!


技术人员的通病就是:自己钻了牛角尖总会死不承认,哈哈!

老兄,这事儿上,依我看来啊,还是你钻了牛角尖,不过这并不妨碍我佩服您,新年快乐!
20 楼 cqwonder 2009-01-02  
fins 写道
cqwonder 写道

这是一个典型的自以为高深的伪问题。 任何一种语言都不会处理“闰秒”! 以Java为例: 1、getTime得到从1970年1月1日开始计算到 Date 对象中的时间之间的毫秒数。 2、System.currentTimeMillis()产生一个当前的毫秒,这个毫秒是自1970年1月1日0时起的毫秒数。 闰秒在哪儿处理?是在 毫秒数转换为时间 的时候处理,还是获取毫秒数的时候处理? 对任何一种语言来讲,它都只能按照它所能得到的数值按照固定的算法转换为时间,至于它得到的数值是否精确,是否处理过闰秒了,对语言本身来讲,都不是它应该关心的问题。 如果真的有哪种语言去处理闰秒,那可能就和网页代码中掺入sql语句一样难看,不是你这一层该管的事儿啊!!! (千年虫为什么要管?不用我解释了吧。。。 )


你这就是典型的自以为是的回答,
你这种总是以"上帝视角"说话的人实在让我很无奈.


元旦加班,不爽,见谅!

知道调整闰秒时授时中心是怎么发送时间的吗?它会这样发送:23:59:59 23:59:60 0:0:0……

语言这一层所要做的事情仅仅是:保证不把23:59:60认为是一个错误的值就行了

任何一种语言,语言,语言啊,它怎么可能去处理闰秒,还是那一句话:不是你这一层该管的事儿啊!!!
19 楼 javaeyebird 2009-01-02  
javaeyebird 写道

这个通常是库的问题,对标准库的处理不满意的话,可以自己改写(sun java支持用自己写的类有限制地替换jdk的类)
不过除了特殊领域的应用,闰秒完全不用去考虑,一般机器时钟的误差累积都大大超过了闰秒
考虑怎么处理闰秒,会使许多程序变得复杂,完全没有必要
就像一些项目中,年份限制在1901-2099之间,这个范围正好每4年一闰年,不存在百年4百年的修正,在一些时间段计算上要容易许多
不考虑闰秒,对业务没有影响,考虑它反而可能导致程序错误(60、61秒需要处理,等等),干脆就忽略它吧

对于需要处理闰秒的比如天文领域的软件,使用语言标准库的时间功能,一般是不合适的选择
比如时间范围不够,时间精度不够,历制太少等等
还是使用专用的时间库比较好,在那里支持闰秒就可以了
80/20原则
18 楼 javaeyebird 2009-01-02  
引用

摘录一段 jdk 的api文档中 讲解Date类的部分 :
引用
A second is represented by an integer from 0 to 61; the values 60 and 61 occur only for leap seconds and even then only in Java implementations that actually track leap seconds correctly. Because of the manner in which leap seconds are currently introduced, it is extremely unlikely that two leap seconds will occur in the same minute, but this specification follows the date and time conventions for ISO C.

我的观点: 
目前的"语言实现"上没有对闰秒做特殊处理, 但是很多语言在设计上应该是考虑到"闰秒"的, 至少java是如此(上面的英文为证).
注意红字Java implementations that actually track leap seconds correctly.
java不仅仅是运行在PC上的, 它也可能在一些特殊设备上运行 而且java也可以有多个版本的实现,
没有人敢保证"java100%的不处理闰秒", 也许某一天某一个特殊版本的java就会处理闰秒(或者已经有某个定制版本的java对闰秒进行了处理,只是我们无从知晓).

这个通常是库的问题,对标准库的处理不满意的话,可以自己改写(sun java支持用自己写的类有限制地替换jdk的类)
不过除了特殊领域的应用,闰秒完全不用去考虑,一般机器时钟的误差累积都大大超过了闰秒
考虑怎么处理闰秒,会使许多程序变得复杂,完全没有必要
就像一些项目中,年份限制在1901-2099之间,这个范围正好每4年一闰年,不存在百年4百年的修正,在一些时间段计算上要容易许多
不考虑闰秒,对业务没有影响,考虑它反而可能导致程序错误(60、61秒需要处理,等等),干脆就忽略它吧
17 楼 fins 2009-01-02  
cqwonder 写道

这是一个典型的自以为高深的伪问题。 任何一种语言都不会处理“闰秒”! 以Java为例: 1、getTime得到从1970年1月1日开始计算到 Date 对象中的时间之间的毫秒数。 2、System.currentTimeMillis()产生一个当前的毫秒,这个毫秒是自1970年1月1日0时起的毫秒数。 闰秒在哪儿处理?是在 毫秒数转换为时间 的时候处理,还是获取毫秒数的时候处理? 对任何一种语言来讲,它都只能按照它所能得到的数值按照固定的算法转换为时间,至于它得到的数值是否精确,是否处理过闰秒了,对语言本身来讲,都不是它应该关心的问题。 如果真的有哪种语言去处理闰秒,那可能就和网页代码中掺入sql语句一样难看,不是你这一层该管的事儿啊!!! (千年虫为什么要管?不用我解释了吧。。。 )


你这就是典型的自以为是的回答,
你这种总是以"上帝视角"说话的人实在让我很无奈.


我就纳闷了 你从哪里看出来我"自以为高深"了? 我要是自以为高深我会发到海版?


另外 你去看一看jdk的api文档之后 再来说话.
( 你说那么多 就冲你的那句"任何一种语言都不会处理“闰秒”" 我就懒得往下看了. )

摘录一段 jdk 的api文档中 讲解Date类的部分 :
引用
A second is represented by an integer from 0 to 61; the values 60 and 61 occur only for leap seconds and even then only in Java implementations that actually track leap seconds correctly. Because of the manner in which leap seconds are currently introduced, it is extremely unlikely that two leap seconds will occur in the same minute, but this specification follows the date and time conventions for ISO C.



我的观点: 
目前的"语言实现"上没有对闰秒做特殊处理, 但是很多语言在设计上应该是考虑到"闰秒"的, 至少java是如此(上面的英文为证).
注意红字Java implementations that actually track leap seconds correctly.
java不仅仅是运行在PC上的, 它也可能在一些特殊设备上运行 而且java也可以有多个版本的实现,
没有人敢保证"java100%的不处理闰秒", 也许某一天某一个特殊版本的java就会处理闰秒(或者已经有某个定制版本的java对闰秒进行了处理,只是我们无从知晓).






16 楼 cqwonder 2009-01-02  
这是一个典型的自以为高深的伪问题。

任何一种语言都不会处理“闰秒”!

以Java为例:

1、getTime得到从1970年1月1日开始计算到 Date 对象中的时间之间的毫秒数。
2、System.currentTimeMillis()产生一个当前的毫秒,这个毫秒是自1970年1月1日0时起的毫秒数。

闰秒在哪儿处理?是在 毫秒数转换为时间 的时候处理,还是获取毫秒数的时候处理?

对任何一种语言来讲,它都只能按照它所能得到的数值按照固定的算法转换为时间,至于它得到的数值是否精确,是否处理过闰秒了,对语言本身来讲,都不是它应该关心的问题。

如果真的有哪种语言去处理闰秒,那可能就和网页代码中掺入sql语句一样难看,不是你这一层该管的事儿啊!!!

(千年虫为什么要管?不用我解释了吧。。。 )
15 楼 feilng 2009-01-02  
闰秒问题是有病,时间只是运动,我们需要一种运动来作为参照衡量其他运动
既然我们选择了“原子时”,不能因为地球自转的不稳定来调整所谓的世界时,这是很不严肃的。
14 楼 eyejava 2009-01-01  
我怎么发现电脑一般都是偏慢的?
13 楼 javaeyebird 2009-01-01  
javaeyebird 写道
insiku 写道
基本上不会处理润秒
润秒的产生是因为地球自转变慢
这东西太没规律
最近三次 98年 06年 09年
万一哪一天 爆发第三次世界大战 丢了10颗原子弹 造成润分钟的产生 是否要处理?

哈哈
其实,闰秒根本就不用处理
假设3年94608000秒多出一秒,你就当做系统时间每94608000秒慢一秒
平均到94608000,就是每秒慢1.05699307e-8秒,就是每秒误差不到11纳秒
这个完全可以忽略,哈哈

事实上,绝大部分机器,包括许多服务器,系统时钟的计时误差远远比11纳秒大的多
一般机器的时钟都是偏快,没有使用时钟同步的服务器,过一阵子就要手工把系统时间拨回
真郁闷,我宁可系统时间偏慢,也不要偏快,因为时间往回调,将导致许多程序对时间只增不减的假设失败
12 楼 javaeyebird 2009-01-01  
insiku 写道
基本上不会处理润秒
润秒的产生是因为地球自转变慢
这东西太没规律
最近三次 98年 06年 09年
万一哪一天 爆发第三次世界大战 丢了10颗原子弹 造成润分钟的产生 是否要处理?

哈哈
其实,闰秒根本就不用处理
假设3年94608000秒多出一秒,你就当做系统时间每94608000秒慢一秒
平均到94608000,就是每秒慢1.05699307e-8秒,就是每秒误差不到11纳秒
这个完全可以忽略,哈哈
11 楼 insiku 2009-01-01  
基本上不会处理润秒
润秒的产生是因为地球自转变慢
这东西太没规律
最近三次 98年 06年 09年
万一哪一天 爆发第三次世界大战 丢了10颗原子弹 造成润分钟的产生 是否要处理?
10 楼 Nighthaven 2009-01-01  
闰秒的问题非常麻烦,只需要稍稍考虑下就能猜出:社会上除了天文团体外都是集体选择不处理的(就当08年未多出一秒),在未来,当闰秒总数累计到比较可观的数量时,可能会着手集中解决。
9 楼 抛出异常的爱 2009-01-01  
Saito 写道
    这个闰秒问题早在 Java  ruby 这些语言出现之前都已经存在..并且国际时间也调整过很多次了 好几十年了...  再说了..这么多年了都没纠正过..
    假设有很多系统都基于时间差来做..你fix了之后.. 两个秒数之间突然多了一秒. 可能很多就直接当掉了. fix还不如不fix . 这不增加隐患么..

jsr对应日期 有些特别时间是硬编码的..
fins 写道
其实 java是支持闰秒的
只是不知道sun的这个jdk实现是否支持
如果支持的话 它肯定是硬代码加上那一秒的
那么 08年这个最新的1秒 什么时候加呢

一个jsr要想通过.少说要用半年时间
PS:查查现行版本的jsr是否已经改过了.
8 楼 fins 2009-01-01  
其实 java是支持闰秒的
只是不知道sun的这个jdk实现是否支持
如果支持的话 它肯定是硬代码加上那一秒的
那么 08年这个最新的1秒 什么时候加呢
7 楼 fins 2009-01-01  
Saito 写道
    这个闰秒问题早在 Java  ruby 这些语言出现之前都已经存在..并且国际时间也调整过很多次了 好几十年了...  再说了..这么多年了都没纠正过..
    假设有很多系统都基于时间差来做..你fix了之后.. 两个秒数之间突然多了一秒. 可能很多就直接当掉了. fix还不如不fix . 这不增加隐患么..


你验证过 以前的闰秒 java没有做过处理吗?
6 楼 Saito 2009-01-01  
    这个闰秒问题早在 Java  ruby 这些语言出现之前都已经存在..并且国际时间也调整过很多次了 好几十年了...  再说了..这么多年了都没纠正过..
    假设有很多系统都基于时间差来做..你fix了之后.. 两个秒数之间突然多了一秒. 可能很多就直接当掉了. fix还不如不fix . 这不增加隐患么..
5 楼 weiqingfei 2009-01-01  
几点了都,怎么还不睡觉。

相关推荐

Global site tag (gtag.js) - Google Analytics