我正在使用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.
谢谢!