2014-03-02 100 views
0

我將字符串轉換爲android中的日期對象...... 字符串以「2014-02-22」或類似的形式從服務器傳入。 。我想將它轉換爲我的日期,我可以在我的應用程序中使用.. 我正在使用簡單的日期格式,解析方法來轉換.... 但此語句拋出解析異常...意思是它不轉換我的字符串..這是「2014年2月22日」 ...... 應該轉換,但它不是.... 非常和善幫我在這.....我在應對越來越空如何使用simpledateformat將字符串轉換爲日期

@SuppressLint("SimpleDateFormat") 
public static Date getDate(String string){ 
    Date date = null; 
    try { 
     date = new Date(); 
     date = new SimpleDateFormat("yyyy/MM/dd").parse(string); 
    } 
    catch (ParseException e) { e.printStackTrace(); } 
    catch (java.text.ParseException e) { e.printStackTrace(); } 
    return date; 

} 
+0

試試這個日期=新的SimpleDateFormat( 「YYYY-MM-DD」)解析(字符串); –

+1

格式'yyyy/MM/dd'是否匹配'2014-02-22'? –

+0

可能重複的[如何將Java字符串轉換爲Date對象](http://stackoverflow.com/questions/6510724/how-to-convert-java-string-to-date-object) – MDMalik

回答

2

嘗試如下...

SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
    Date date; 

@SuppressLint("SimpleDateFormat") 
public static Date getDate(String string){ 

     date = new Date(); 

     try { 
       date = format.parse(string); 
     }  catch (ParseException e) { 
       e.printStackTrace(); 
     } 

     return date; 
    } 
+0

只是爲了改善這一點,我將格式定義爲clas級別的靜態final,因爲yo只需要創建一次,然後就可以在其他方法中重用。 –

+0

除了您的觀點...我還想在課堂級別聲明'日期'對象...但是,僅爲解決方案,我提供了上述解決方案。謝謝你的觀點。 –

+0

確定其工作...感謝那... ,但我現在有新的問題....現在我已經轉換日期保存到數據庫.... 當我下一次從數據庫中讀取我不需要解析它再次......對嗎? 我怎麼能保存日期的字符串值,因爲它是.....如果我解析它使用這種方法異常發生..但是它的工作正常,當我將它保存到數據庫 –

0

只需使用SimpleDateFormat(點擊鏈接查看所有格式模式)。

String string = "2014-02-22"; 
Date date = new SimpleDateFormat("yyy-M-d", Locale.ENGLISH).parse(string); 
System.out.println(date); // Sat Jan 02 00:00:00 BOT 2010 

下面是相關的,從the javadoc提取物,列出所有可用格式模式:

G Era designator  Text    AD 
y Year     Year    1996; 96 
M Month in year  Month    July; Jul; 07 
w Week in year   Number    27 
W Week in month  Number    2 
D Day in year   Number    189 
d Day in month   Number    10 
F Day of week in month Number    2 
E Day in week   Text    Tuesday; Tue 
u Day number of week Number    1 
a Am/pm marker   Text    PM 
H Hour in day (0-23) Number    0 
k Hour in day (1-24) Number    24 
K Hour in am/pm (0-11) Number    0 
h Hour in am/pm (1-12) Number    12 
m Minute in hour  Number    30 
s Second in minute  Number    55 
S Millisecond   Number    978 
z Time zone   General time zone Pacific Standard Time; PST; GMT-08:00 
Z Time zone   RFC 822 time zone -0800 
X Time zone   ISO 8601 time zone -08; -0800; -08:00 
+0

什麼?你甚至讀過這個問題嗎? –

+0

是我的字符串變量是你的格式的參數,你的'SimpleDateFormat'格式不匹配,因此問題 – MDMalik

+0

我不是OP。但是,你的意思是 - *不這樣做,這是困難的。*? OP已經在使用'SimpleDateFormat'。 –

1
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 

Date testDate = null; 

try { 
     testDate = sdf.parse("2013-11-12"); 
} 
catch(Exception ex) { 
     ex.printStackTrace(); 
} 

int date= testDate.getDate(); 
int month = testDate.getMonth(); 
int year = testDate.getYear(); 
+0

小寫字母m匹配分鐘,而不是月。 OP需要大寫字母M,如其他所有答案所示。 –

+0

tnq typo ........ –

+0

np,我們發現上週在別人寫在生產代碼中的日誌工具中有同樣的錯誤!順便說一句,我也會使sdf類靜態最終,因爲它是可重複使用的 –

相關問題