2012-05-15 42 views
4

我有串這樣的:如何從給定的字符串獲取日期部分?

Mon, 14 May 2012 13:56:38 GMT

現在我只想只有日期即14 May 2012

我應該需要該怎麼辦?

+0

你要買轉化爲一流的'Date'對象,或者是你問如何去除字符串(即使用正則表達式)? – andersoj

+0

看起來像你需要[正則表達式](http://docs.oracle.com/javase/tutorial/essential/regex/)... – Wernsey

+0

是的,我需要一個正則表達式,它只會給我日期部分 – Neha

回答

8

執行此操作的正確方法是將其解析爲一個Date對象,並按照需要的方式格式化此日期對象。

DateFormat inputDF = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z"); 
DateFormat outputDF = new SimpleDateFormat("d MMM yyyy"); 

String input = "Mon, 14 May 2012 13:56:38 GMT"; 
Date date = inputDF.parse(input); 
String output = outputDF.format(date); 

System.out.println(output); 

輸出:

14 May 2012 

此代碼是

  • 更易於維護(如果有什麼輸出格式稍有變化,而輸入的格式保存下來,反之亦然? )
  • 可以說比較容易閱讀

比任何依賴於拆分字符串,固定索引或正則表達式的子字符串的解決方案。

5

爲什麼不parse()字符串使用DateFormat,這會給你一個Date對象。將此Date設置爲Calendar,您可以查詢任何所需的字段,例如get(Calendar.DAY_OF_MONTH)

事情是這樣的......

SimpleDateFormat myDateFormat = new SimpleDateFormat("EEE, d MMM yyyy H:m:s z"); 
Date myDate = myDateFormat.parse(inputString); 

Calendar myCalendar = Calendar.getInstance(); 
myCalendar.setTime(myDate); 

String outputDate = myCalendar.get(Calendar.DAY_OF_MONTH) + " " + 
        myCalendar.get(Calendar.MONTH) + " " + 
        myCalendar.get(Calendar.YEAR); 

可能是冗長的寫了一點點,但至少你結束了一個Calendar,可以很容易給你想要的任何字段(如果,例如,你想用一個字段值來執行一些處理)。它也可以用於計算或許多其他目的。這真的取決於你有什麼想要做的日期後,你有。

+0

-1,這不會編譯。即使是這樣,它可能會打印一堆數字,例如「May」。我建議使用'outputDate = String.format(「%1 $ te%1 $ tb%1 $ tY」,myCalendar)' – aioobe

+0

很酷,很好的建議,我不知道這樣的說法。至於它沒有編譯 - 有一些東西丟失,就像他們需要填充'inputString'並做一些導入 - 我不能爲他們完成所有的工作。我更關心的是如何嘗試提供一種不同的方式來使用日期,以便他們在事後可以使用數據來實現某些功能,如果他們需要的話。我意識到它打印'5'而不是'May' - 我不想過分複雜的答案。 – wattostudios

+1

另外,日曆。獲得返回一個'int',它不能與char,'''結合成一個'String'(這就是我所指的實際)。 – aioobe

1

自認爲是一個固定長度的字符串,你可以使用substring()

String input = "Mon, 14 May 2012 13:56:38 GMT"; 
String output = input.substring(5, 16); 
+0

這裏假設DAY_OF_MONTH(本例中爲14)始終爲2位數字,但並非總是如此。與MONTH類似 - 它不會總是隻有3個字符長。 – wattostudios

-1

您可以使用此:

String st = "Mon, 14 May 2012 13:56:38 GMT"; 

for(int i=0;i<=st.length();i++){ 

    if (st.charAt(i)==':') { 

    index=i; 
    index=index-2; 
    break; 
    } 


} 

String onlyDate=st.substring(4,index).trim(); 
相關問題