簡體   English   中英

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

這是錯誤的。 請提出建議。

tl; dr

使用智能對象,而不是啞字符串。

java.time.LocalDateTime ldt = myResultSet.getObject( … , LocalDateTime.class )

java.time

僅供參考, Joda-Time項目現在處於維護模式 ,團隊建議遷移到java.time類。 請參見Oracle教程

使用JDBC 4.2及更高版本,您可以通過getObjectsetObject方法直接與數據庫交換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.time框架內置於Java 8及更高版本中。 這些類取代了麻煩的舊的舊式日期時間類,例如java.util.DateCalendarSimpleDateFormat

現在處於維護模式Joda-Time項目建議遷移到java.time類。

要了解更多信息,請參見Oracle教程 並在Stack Overflow中搜索許多示例和說明。 規格為JSR 310

在哪里獲取java.time類?

ThreeTen-Extra項目使用其他類擴展了java.time。 該項目為將來可能在java.time中添加內容提供了一個試驗場。 您可以在這里找到一些有用的類,比如IntervalYearWeekYearQuarter ,和更多

使用模式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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM