我们的项目需要季度支持,不幸的是,我们使用的是java 1.7,并且由于其他不幸的原因而陷入困境。
我们添加了ICU4j库来使用在其中提供的SimpleDateFormat。
不幸的是,这是一个非常奇怪的解析日期(见下文)。任何帮助都将不胜感激。
val formatter = new java.text.SimpleDateFormat("yyyy")
val formatter2 = new com.ibm.icu.text.SimpleDateFormat("yyyy")
Array(formatter2.parse("1234"), formatter.parse("1234"))结果
0 = {Date@10561} "Sun Jan 01 00:00:00 PST 1234"
1 = {Date@10563} "Sun Jan 01 00:12:28 PST 1234"我阅读了大量的文档,但不确定为什么要用偏移量进行解析。我确信这是api的一部分,并希望有人能解释我的困难。任何帮助都将不胜感激。
http://www.icu-project.org/apiref/icu4j/com/ibm/icu/text/SimpleDateFormat.html
发布于 2017-01-27 09:22:03
关于时区问题的:
也许ICU4J时区数据/规则和您的Java7-JVM在1234年是不同的。通常你应该使用1900年以后的几年,对吧?如果是这样的话,得到相同规则的概率要高得多。如果不是,那么您应该真正关心选择正确的版本,以确保您有相同的规则。也许您还需要应用甲骨文的卷取器工具。
关于区域的更新: 由于OP的良好研究,我们可以设置一个特定于ICU4J的系统属性:
com.ibm.icu.util.TimeZone.DefaultTimeZoneType = JDK。
无论如何,如果使用ICU4J的唯一原因是对季度的支持,那么另一种选择可能是
任一
使用我的库Time4J (v3.x行运行在Java-6+7上)。它还提供了更小、更好的API (更接近java.time在Java-8中所做的)的季度支持,包括基于与ICU4J相同的CLDR数据的良好国际化,请参见模式文档。
或
使用Threeten-Backport (缺点是没有任何国际化->,缺乏本地化数据)。
https://stackoverflow.com/questions/41886501
复制相似问题