[英]Runtime exception while trying to parse date time using joda DateTimeFormatter
[英]Joda DateTimeFormatter changing date while parsing
使用Joda DateTimeFormatter時遇到問題。 請幫幫我!
這就是我的格式化程序的樣子-
最后的靜態DateTimeFormatter inJodaFmter = DateTimeFormat.forPattern(“ YYYY-MM-DD HH:mm:ss”);
我正在進行JDBC調用,並以字符串形式獲取日期。
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
這是錯誤的。 請提出建議。
使用智能對象,而不是啞字符串。
java.time.LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class )
僅供參考, Joda-Time項目現在處於維護模式 ,團隊建議遷移到java.time類。 請參見Oracle教程 。
使用JDBC 4.2及更高版本,您可以通過getObject
和setObject
方法直接與數據庫交換java.time對象。 使用對象而不是僅字符串來與數據庫進行通信。
如果從以類似於標准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及更高版本中。 這些類取代了麻煩的舊的舊式日期時間類,例如java.util.Date
, Calendar
和SimpleDateFormat
。
現在處於維護模式的Joda-Time項目建議遷移到java.time類。
要了解更多信息,請參見Oracle教程 。 並在Stack Overflow中搜索許多示例和說明。 規格為JSR 310 。
在哪里獲取java.time類?
ThreeTen-Extra項目使用其他類擴展了java.time。 該項目為將來可能在java.time中添加內容提供了一個試驗場。 您可以在這里找到一些有用的類,比如Interval
, YearWeek
, YearQuarter
,和更多 。
使用模式DateTimeFormat.forPattern(“ YMd H:m:s”)解析
來源-http://joda-time.sourceforge.net/apidocs/org/joda/time/format/DateTimeFormat.html
另外,您可以嘗試這樣;
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);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.