使用Joda DateTimeFormatter时遇到问题。 请帮帮我!!
这就是我的格式化程序的样子 -
最终静态DateTimeFormatter inJodaFmter = DateTimeFormat.forPattern(“YYYY-MM-DD HH:mm:ss”);
我正在进行JDBC调用并将日期作为String。
resultSet.getString(10)返回“2013-12-06 00:00:00”
但是,在使用Joda DateTimeFormatter对其进行格式化时,它会发生如下变化。
inJodaFmter.parseLocalDateTime(resultSet.getString(10))=(org.joda.time.LocalDateTime) 2013-01-06T00:00:00.000
这是错误的。 请建议。
答案 0 :(得分:2)
使用智能对象,而不是愚蠢的字符串。
java.time.LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class )
仅供参考,Joda-Time项目现在位于maintenance mode,团队建议迁移到java.time课程。请参阅Tutorial by Oracle。
使用JDBC 4.2及更高版本,您可以通过getObject
&更新来直接与数据库交换java.time对象。 setObject
方法。使用对象而不仅仅是字符串来与数据库通信。
如果从类似于标准TIMESTAMP WITHOUT TIME ZONE
的类型定义的列中绘制数据,请使用LocalDateTime
类。
LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class ) ;
如果从类似于标准TIMESTAMP WITH TIME ZONE
的类型定义的列中绘制数据,请使用Instant
类或ZonedDateTime
类。
Instant instant = myResultSet.getObject( … , Instant.class ) ;
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
答案 1 :(得分:1)
使用模式解决 DateTimeFormat.forPattern(" Y-M-d H:m:s")
来源 - http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html
答案 2 :(得分:0)
另外,你可以这样试试;
public class Test {
static final String DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static void main(String[] args) {
String dateTime = "2013-12-06 00:00:00";
DateTimeFormatter formatter = DateTimeFormat.forPattern(DATE_FORMAT);
DateTime jodatime = formatter.parseDateTime(dateTime);
System.out.println(jodatime);
}
}