2014-04-14 130 views
2

我有一個數據庫日期字段,它會返回作爲Java的字符串轉換爲日期

resultSet.getDate("startDate"); 

我想這樣做的格式更改爲dd-MMM-yy並保存成日期類型,這意味着我不希望將其轉換字符串。

我有下面的代碼片段更改日期格式

private Date getDate(ResultSet resultSet,Date columnName) 
SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yy"); 
String date = 
     new SimpleDateFormat("dd-MMM-yy").format(columnName); 

什麼是String轉換再次回日期相同的日期格式

dd-MMM-yy 
+2

檢出http://stackoverflow.com/questions/5683728/convert-java-utildate字符串 – Pphoenix

+0

您正在使用_BEST_方法。 –

+0

@Pphoenix有一切都轉換回字符串,我想返回日期不是字符串 – user75ponic

回答

2

我想這樣做的格式更改爲DD-MMM-YY並保存成日期這意味着我不想將它轉換爲String。

這是不可能的;您對對象所代表的內容有誤解。

A Date對象只包含一個時間戳值,它不知道打印時應如何格式化。所以,你不能有一個具有特定格式的Date對象。

相反,您將對象設置爲SimpleDateFormat對象的格式,然後使用該對象將您的Date對象轉換爲文本。

+0

Jesper,我同意你關於Date提到的內容,因爲它也可能包含時間戳。就這個應用而言,日期沒有時間戳方面。由於我正在從數據庫接收此日期,因此我想更改格式並將日期保存爲數據類型。因此我正在尋找如何實現這一目標的解決方案。 – user75ponic

+1

@Polppan'java.util.Date'不包含時間戳,它是一個時間戳。關於'java.sql.Date':在語義上表示一個日期時,它不能在jdbc上下文之外使用。並且這兩種類型都沒有關聯的格式信息。 –

+0

「我想更改格式並將數據類型保存爲日期」 - 正如我所解釋的那樣,這是不可能的;你對「日期」格式是什麼有錯誤的想法。 '日期'格式沒有格式。您不能擁有具有特定格式的「Date」對象,或更改「Date」對象的格式。 – Jesper

2

將字符串轉換回日期的最佳方法使用:

Date date = new SimpleDateFormat("dd-MMM-yy", Locale.US).parse("01-JAN-84"); 

保留日期數據而不轉換爲字符串的一種方法是調用:

long time = date.getTime(); 

可以使用再構造回日期:

Date date = new Date(time); 

而且可以使用的SimpleDateFormat把它格式化爲字符串,請你,需要的時候。當然這種方法與直接傳遞Date對象沒有區別。

+0

將日期格式轉換爲'Thu Jun 06 00:00:00 GMT 2013' – user75ponic

+0

只需將Locale.US添加到構造函數中即可。 –

+0

它沒有幫助。 – user75ponic

0

我建議你做的格式可重複使用的

private static SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yy"); 

,然後做

Date converted = sdf.parse(dateString); 
+1

這並不總是一個好的解決方案,因爲SimpleDateFormat不是線程安全的。 – boskop

1
SimpleDateFormat format1 = new SimpleDateFormat("dd-MMM-yy"); 
String date = format1.format(columnName); 
System.out.println(date); 
// back to Date 
Date date2 = format1.parse(date); 
System.out.println(date2.toString()); 

如果您想自定義輸出,您確實需要使用日期格式。

+0

這種方法的問題是格式改變,例如格式改變回''Thu Jun 06 00:00:00 GMT 2013' – user75ponic

+0

是的,就是這樣。您可以創建一個幫助器類,每當您將日期傳遞給該幫助器類時,該類將會格式化日期。你可以在應用程序的任何地方訪問它。 – bhadz

1

你是在同一條船上,我是,我猜

convert datestring from one format to another in java simpledate format

大量的分析後,我放棄了字符串轉換回日期,因爲這將導致在特定日期格式的系統,爲了保存日期格式,你應該始終把它保持爲字符串類型,我沒有將日期類型轉換爲我的日期屬性的字符串類型。

我有這個情況,

我想兩個日期之間的間隔,讓我們說,我有分貝日期格式"dd-MMM-yy",但你的系統格式爲"mm-dd-yyyy",所以要比較兩個日期,你需要轉換你的數據庫格式/解析爲系統格式,它應該是在相同的格式進行比較,這對我來說是有意義的

+0

爲什麼我希望在日期格式中是因爲我從數據庫返回日期,因此最好將它保留爲具有日期的所有未來處理的相同格式。 – user75ponic

+0

字符串類型將保留您的日期格式,當您執行simpledateformat.parse(日期)時會以系統格式給出日期。您可以嘗試使用此Locale.setDefault(Locale.US)作爲自定義語言環境。 –

+0

@Polppan嘗試將系統默認時間格式轉換爲您的數據庫格式。這將是一種方式。 –