2014-01-07 183 views
1

這是我在我的應用程序得到一個日期:如何將帶有時區的PostgreSQL時間戳轉換爲DateTime?

String psqlDate = "2013-11-17 14:08:33+01"; 

什麼是轉換psqlDate到喬達DateTime最好的方法?

[編輯]

我可以使用DateTimeparse方法。它可以很好地處理時間戳,這些時間戳與T-2013-11-17T14:08:33+01有關的日期和時間分割信息。

這應該有良好的工作模式:

DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd..."); 
DateTime dt = DateTime.parse((String) obj, formatter); 

什麼是正確的方式來PostgreSQL的時間戳和時區?

+1

驚訝你的代碼看到一個日期'String',而不是'java.sql.Date'。你如何從數據庫中獲取這個數據? –

+0

換句話說,爲什麼不把'SELECT'作爲'date'放在首位呢?然後,您可以使用來自'java.sql.Date' /'java.util.Date'的JodaTime轉換例程。 –

+1

我沒有從PostgreSQL中獲取數據stright。我以JSON格式從Kafka獲取數據。 –

回答

4

這裏是一個真正的喬達答案。您是否嘗試過org.joda.time.format.DateTimeFormat以下的模式?

「YYYY-MM-DD HH:MM:SSZ」

我看你的時區偏移小時,才需要指定,而不是幾分鐘。所以也許你需要簡單的預處理和雙Z這樣:

String psqlDate = "2013-11-17 14:08:33+01"; 
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ssZZ"); 
DateTime dt = DateTime.parse(psqlDate + ":00", formatter); 
+0

謝謝。兩種模式都適用於我。 –

2

你可以試試這個

String psqlDate = "2013-11-17 14:08:33+01"; 
    Date date=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss'+'01").parse(psqlDate); 
    System.out.println(date); 

輸出地說:

Sun Nov 17 14:08:33 IST 2013 
+0

獲得有關時區信息的正確模式是什麼? –

相關問題