`
RednaxelaFX
  • 浏览: 3016465 次
  • 性别: Icon_minigender_1
  • 来自: 海外
社区版块
存档分类
最新评论

试玩了一下JSR 310 Date and Time API

    博客分类:
  • Java
阅读更多
先从官网下载到JSR 310的参考实现:jsr-310-ri-0.6.3.jar, jsr-310-TZDB-all-0.6.3.jar

然后用Groovy来试玩一下
D:\downloads>set JAVA_OPTS=-Xbootclasspath/p:jsr-310-ri-0.6.3.jar;jsr-310-TZDB-all-0.6.3.jar

D:\downloads>\sdk\groovy-1.7.2\bin\groovysh
Groovy Shell (1.7.2, JVM: 1.6.0_23)
Type 'help' or '\h' for help.
-----------------------------------------------------------------------
groovy:000> import javax.time.*
===> [import javax.time.*]
groovy:000> import javax.time.calendar.*
===> [import javax.time.*, import javax.time.calendar.*]
groovy:000> london = TimeZone.of("Europe/London")
===> Europe/London
groovy:000> date1 = ZonedDateTime.of(1752, 9, 2, 0, 0, 0, 0, london)
===> 1752-09-02T00:00-00:01:15[Europe/London]
groovy:000> date2 = date1.plus(Period.ofDays(1).withHours(8))
===> 1752-09-03T08:00-00:01:15[Europe/London]
groovy:000> date2.toLocalDate()
===> 1752-09-03
groovy:000> eastern = TimeZone.of("US/Eastern")
===> US/Eastern
groovy:000> date3 = ZonedDateTime.of(1752, 9, 2, 0, 0, 0, 0, eastern)
===> 1752-09-02T00:00-04:56:02[US/Eastern]
groovy:000> date4 = date3.plus(Period.ofDays(1).withHours(4), ZoneResolvers.retainOffset())
===> 1752-09-03T04:00-04:56:02[US/Eastern]
groovy:000> quit


之前的一些对话:
t 写道
klauszou 说起来到现在我还真没见过哪个语言里有一个真正写的完全完善的公历的日期类 所以每次看到那些装逼说啥有自带类还用的着写吗的人就觉得想笑

klauszou 说来m$在这点上很有趣,知道自己写不好,于是干脆就把可能出问题的时间段都排除掉了www

rednaxelafx @klauszou Java的新Date Time API (JSR 310)或许还行?求评价

klauszou 没用过,不太清楚具体怎样,但你可以很简单的来验证,首先它有没有location参数,没有的就肯定不完善toka RT: @rednaxelafx: @klauszou Java的新Date Time API (JSR 310)或许还行?求评价

klauszou 举个简单的例子,不是所有国家都同时开始用格里历的,历史上来说包括英国,美国之类的国家直到18世纪才开始用,所以儒略格里补差计算定在1752年,而欧洲传统国家的补差计算是在1582年。而假设要涉及到时区则更加的复杂

rednaxelafx @klauszou 唔,那个例子我不知道该如何验证好。看到里面有这样的API,比单纯的offset貌似先进些 http://is.gd/jiN76

klauszou .@rednaxelafx 验证方法很简单,欧洲补差是1582年10月4日开始,补10天,即下一天为新历的10月15日。美国或者英国的话,则从1752年9月2日开始,补11天,即下一天是新历的9月14日。 粗略看了看,这个比大多数的都靠谱,不过应该还不是完善的。

klauszou .@rednaxelafx 这个的时区计算倒是相对很好了,几个特殊情况都考虑到了,不过在涉及location的问题上应该还是有问题

于是看来JSR 310的参考实现还是考虑得不够周全?

JSR 310整个API用起来的感觉非常顺畅,比JDK现有的两套时间API好多了
可惜Oracle不知道什么时候才会把它整合到JDK里去。JDK7多半是没指望了,JDK8恐怕也…

更新:
嗷,JSR-310的作者之一说他会继续开发JSR-310,并以Java SE 8为目标。好事啊!
分享到:
评论
12 楼 glacjay 2010-12-27  
补差?都没听说过这东东。

很重要么?
11 楼 lwwin 2010-12-27  
RednaxelaFX 写道
lwwin 写道
避免太长就不引用了……

import如果带有*符号的,似乎只是作为引用路径带入了,随便写一个import java.abc.*,然后===> [import java.abc.*]

所以单纯用import那两句是否正确也看不出来,至于一旦把CLASSPATH引入JSR310以后,就会提示出错,对于TimeZone.class,println出现的结果是java.util.TimeZone,的确应该是水水没弄明白导致……

今天没仔细查,打算在别的机器上再试试……

好吧前面我没看清楚,你那个CLASSPATH是弄错了——不要设那个变量。你看我的例子里就没设。


感谢,今天总算知道你那句话的含义了,和C++里面设置库目录来制定搜索次序的含义一致
10 楼 RednaxelaFX 2010-12-26  
lwwin 写道
避免太长就不引用了……

import如果带有*符号的,似乎只是作为引用路径带入了,随便写一个import java.abc.*,然后===> [import java.abc.*]

所以单纯用import那两句是否正确也看不出来,至于一旦把CLASSPATH引入JSR310以后,就会提示出错,对于TimeZone.class,println出现的结果是java.util.TimeZone,的确应该是水水没弄明白导致……

今天没仔细查,打算在别的机器上再试试……

好吧前面我没看清楚,你那个CLASSPATH是弄错了——不要设那个变量。你看我的例子里就没设。
9 楼 lwwin 2010-12-26  
避免太长就不引用了……

import如果带有*符号的,似乎只是作为引用路径带入了,随便写一个import java.abc.*,然后===> [import java.abc.*]

所以单纯用import那两句是否正确也看不出来,至于一旦把CLASSPATH引入JSR310以后,就会提示出错,对于TimeZone.class,println出现的结果是java.util.TimeZone,的确应该是水水没弄明白导致……

今天没仔细查,打算在别的机器上再试试……
8 楼 RednaxelaFX 2010-12-25  
lwwin 写道
RednaxelaFX 写道
lwwin 写道
问一下,下载的包应该放在哪里……
下载配置好了GROOVY以后,不论是CONSOEL还是SHELL,都会报告这个错误:
groovy.lang.MissingMethodException: No signature of method: static java.util.TimeZone.of() .......
大概是路径没有放对,都设置到CLASSPATH里面去了居然也不行=3=

不过自己先去找找GROOVY怎么放LIB的先

看帖要看全…
那俩JAR包随便放哪里都行,只要放在同一目录下;我是在放它们的目录启动Groovy shell的,在启动前先设置JAVA_OPTS=-Xbootclasspath/p:jsr-310-ri-0.6.3.jar;jsr-310-TZDB-all-0.6.3.jar,就好了


反复看了好多遍了,应该是看全的……就是因为这个设置JAVA_OPTS很怪异没有起作用……不解……
查了一天了(orz),然后去看了JAVA包的引用路径去了……干掉了所有环境变量,然后依然是这个java.util,话说代码里面没有包含java.util.*才对呀……,然后尝试特地把CLASSPATH强制指定这两个jar,放在E:\jLIBs\下面,弄了个BAT:
@set "JAVA_OPTS=-Xbootclasspath/p:E:\jLIBs\jsr-310-ri-0.6.3.jar;E:\jLIBs\jsr-310-TZDB-all-0.6.3.jar"
@set "CLASSPATH=E:\jLIBs\jsr-310-ri-0.6.3.jar;E:\jLIBs\jsr-310-TZDB-all-0.6.3.jar"

启动groovy之前,先调用这个BAT,理论上就应该可以正确开启GROOVY了吧,但是还是提示和JAVA.UTIL.冲突……怪事~ 应该有哪个地方不仔细的,如果FX能看出来就好了……

那个…同志你没import么?
7 楼 lwwin 2010-12-25  
RednaxelaFX 写道
lwwin 写道
问一下,下载的包应该放在哪里……
下载配置好了GROOVY以后,不论是CONSOEL还是SHELL,都会报告这个错误:
groovy.lang.MissingMethodException: No signature of method: static java.util.TimeZone.of() .......
大概是路径没有放对,都设置到CLASSPATH里面去了居然也不行=3=

不过自己先去找找GROOVY怎么放LIB的先

看帖要看全…
那俩JAR包随便放哪里都行,只要放在同一目录下;我是在放它们的目录启动Groovy shell的,在启动前先设置JAVA_OPTS=-Xbootclasspath/p:jsr-310-ri-0.6.3.jar;jsr-310-TZDB-all-0.6.3.jar,就好了


反复看了好多遍了,应该是看全的……就是因为这个设置JAVA_OPTS很怪异没有起作用……不解……
查了一天了(orz),然后去看了JAVA包的引用路径去了……干掉了所有环境变量,然后依然是这个java.util,话说代码里面没有包含java.util.*才对呀……,然后尝试特地把CLASSPATH强制指定这两个jar,放在E:\jLIBs\下面,弄了个BAT:
@set "JAVA_OPTS=-Xbootclasspath/p:E:\jLIBs\jsr-310-ri-0.6.3.jar;E:\jLIBs\jsr-310-TZDB-all-0.6.3.jar"
@set "CLASSPATH=E:\jLIBs\jsr-310-ri-0.6.3.jar;E:\jLIBs\jsr-310-TZDB-all-0.6.3.jar"

启动groovy之前,先调用这个BAT,理论上就应该可以正确开启GROOVY了吧,但是还是提示和JAVA.UTIL.冲突……怪事~ 应该有哪个地方不仔细的,如果FX能看出来就好了……
6 楼 RednaxelaFX 2010-12-25  
lwwin 写道
问一下,下载的包应该放在哪里……
下载配置好了GROOVY以后,不论是CONSOEL还是SHELL,都会报告这个错误:
groovy.lang.MissingMethodException: No signature of method: static java.util.TimeZone.of() .......
大概是路径没有放对,都设置到CLASSPATH里面去了居然也不行=3=

不过自己先去找找GROOVY怎么放LIB的先

看帖要看全…
那俩JAR包随便放哪里都行,只要放在同一目录下;我是在放它们的目录启动Groovy shell的,在启动前先设置JAVA_OPTS=-Xbootclasspath/p:jsr-310-ri-0.6.3.jar;jsr-310-TZDB-all-0.6.3.jar,就好了
5 楼 lwwin 2010-12-25  
问一下,下载的包应该放在哪里……
下载配置好了GROOVY以后,不论是CONSOEL还是SHELL,都会报告这个错误:
groovy.lang.MissingMethodException: No signature of method: static java.util.TimeZone.of() .......
大概是路径没有放对,都设置到CLASSPATH里面去了居然也不行=3=

不过自己先去找找GROOVY怎么放LIB的先
4 楼 lwwin 2010-12-25  
groovy你都已经在用了啊^-^,只是听说过~
3 楼 RednaxelaFX 2010-12-24  
ouchxp 写道
rednaxelafx 写道
于是看来JSR 310的参考实现还是考虑得不够周全?

如果明年砖家说要补差.今年设计的类怎么也没办法周全.....

JSR 310已经考虑到时间规则变化的需求,所以特别设计成容易插拔的。有兴趣的话可以读读JSR 310更详细的介绍资料。搜吧~
2 楼 ouchxp 2010-12-24  
rednaxelafx 写道
于是看来JSR 310的参考实现还是考虑得不够周全?

如果明年砖家说要补差.今年设计的类怎么也没办法周全.....
1 楼 beneo 2010-12-24  
我一直以为格里高利就可以满足世界上大多数国家/地区使用的标准日历系统,而且时间来说,我们只需要关注“现在”,更没有想过1990以前的事情。

借人气广告一下,在我的博客有篇http://beneo.iteye.com/blog/830370讲的是GregorianCalendar ,我觉得这个API应该是没有错,JSR-310看了介绍是increased performance and ease of use.用GregorianCalendar计算出下一个“你需要的时刻”还是挺方便的。

相关推荐

    jackson-datatype-jsr310-2.13.1-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.13.1-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.13.1-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.13.1.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.11.4-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.11.4-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.11.4-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.11.4.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.9.5-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.9.5-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.9.5-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.9.5.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.9.7-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.9.7-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.9.7-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.9.7.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.9.7-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.9.7-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.9.7-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.9.7.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.9.6-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.9.6-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.9.6-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.9.6.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.11.4-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.11.4-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.11.4-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.11.4.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.12.5-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.12.5-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.12.5-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.12.5.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.12.3-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.12.3-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.12.3-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.12.3.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.13.1-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.13.1-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.13.1-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.13.1.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.9.5-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.9.5-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.9.5-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.9.5.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.10.0-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.10.0-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.10.0-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.10.0.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.9.6-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.9.6-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.9.6-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.9.6.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.10.4-API文档-中文版.zip

    赠送原API文档:jackson-datatype-jsr310-2.10.4-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.10.4-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.10.4.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.12.3-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.12.3-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.12.3-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.12.3.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.10.0-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.10.0-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.10.0-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.10.0.pom; 包含翻译后的API文档:...

    jackson-datatype-jsr310-2.10.4-API文档-中英对照版.zip

    赠送原API文档:jackson-datatype-jsr310-2.10.4-javadoc.jar; 赠送源代码:jackson-datatype-jsr310-2.10.4-sources.jar; 赠送Maven依赖信息文件:jackson-datatype-jsr310-2.10.4.pom; 包含翻译后的API文档:...

    jsr173_1.0_api.jar

    spring boot项目启动时 报本地仓库找不到jsr173_1.0_api.jar,下载此jar放置到对应的包下即可

    jsr311-api-1.1.1-API文档-中英对照版.zip

    赠送jar包:jsr311-api-1.1.1.jar; 赠送原API文档:jsr311-api-1.1.1-javadoc.jar; 赠送源代码:jsr311-api-1.1.1-sources.jar; 赠送Maven依赖信息文件:jsr311-api-1.1.1.pom; 包含翻译后的API文档:jsr311-api...

Global site tag (gtag.js) - Google Analytics