小编use*_*248的帖子

Joda时间:日期转换错误

我正在使用Joda Time 2.3将String转换为java.lang.Date.

<dependency>
    <groupId>joda-time</groupId>
    <artifactId>joda-time</artifactId>
    <version>2.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

这是一些测试代码:

System.out.println(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("1927-12-11 11:22:38"));
System.out.println(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("1927-12-11 11:22:38").toDate());

System.out.println(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("1937-12-11 11:22:38"));
System.out.println(DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss").parseDateTime("1937-12-11 11:22:38").toDate());
Run Code Online (Sandbox Code Playgroud)

它在JDK 5和JDK 7下运行良好.但是当使用JDK 6时,结果是:

1927-12-11T11:22:38.000+08:05:57
Sun Dec 11 11:22:33 CST 1927 // lose 5 second
1937-12-11T11:22:38.000+08:00
Sat Dec 11 11:22:38 CST 1937
Run Code Online (Sandbox Code Playgroud)

你看到第一次转换为java.lang.Date失去了5秒,但第二次转换是正确的.唯一的区别是年份数,第一个是1927年,第二个是1937年.1927年以下的所有年份数都将导致错误.

这对joda来说一定是错的.有人可以告诉我如何避免这个错误,或者我必须使用SimpleDateFormatter.

谢谢!

java timezone jodatime

4
推荐指数
1
解决办法
381
查看次数

标签 统计

java ×1

jodatime ×1

timezone ×1