2013-03-22 59 views
1

我有我的字符串這樣的有效日期:有誰知道如何提取我的日期字符串和更改格式?

String strDate = "Available on 03292013"; 

我想提取從strDate字符串日期&將其更改爲Available on 03/05/2015

有誰知道我能做到這一點?

+2

@AliShahAhmed我想提及http://www.whathaveyoutried.com在這種情況下。應該有一個SO規則,如果沒有對可能的解決方案至少有一個模糊的概念,就不允許回答問題。 – Adrian 2013-03-22 08:30:08

回答

2

您可以通過執行以下步驟實現:

  • 首先,使用正則表達式「[^0-9]」來提取您的字符串的日期。
  • 接下來,使用的SimpleDateFormat來提取的日期格式改變從「MMDDYYYY」到 「MM/DD/YYYY」
  • 最後,你必須要追加格式化的日期字符串值轉換爲字符串「可用的」 。

請在下面的代碼中找到更清晰的實現。

package com.stackoverflow.works; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

/** 
* @author sarath_sivan 
*/ 

public class DateFormatHelper { 

    private static final String DD_MM_YYYY = "MMddyyyy"; 
    private static final String DD_SLASH_MM_SLASH_YYYY = "MM/dd/yyyy"; 


    public static void main(String[] args) { 
     DateFormatHelper dateFormatHelper = new DateFormatHelper(); 
     dateFormatHelper.run(); 
    } 

    public void run() { 
     String strDate = "Available on 03292013"; 
     System.out.println("Input Date: " + strDate); 
     strDate = DateFormatHelper.getDate(strDate); 
     strDate = "Available on " + DateFormatHelper.formatDate(strDate); 
     System.out.println("Formatted Date: " + strDate); 
    } 

    public static String formatDate(String strDate) { 
     SimpleDateFormat simpleDateFormat = new SimpleDateFormat(DD_MM_YYYY); 
     Date date; 
     try { 
      date = simpleDateFormat.parse(strDate); 
      simpleDateFormat = new SimpleDateFormat(DD_SLASH_MM_SLASH_YYYY); 
      strDate = simpleDateFormat.format(date); 
     } catch (ParseException parseException) { 
      parseException.printStackTrace(); 
     } 

     return strDate; 
    } 

    public static String getDate(String strDate) { 
     return strDate.replaceAll("[^0-9]", ""); 
    } 

} 

輸出:

Input Date: Available on 03292013 
Formatted Date: Available on 03/29/2013 

希望這有助於...

+1

格式不是'ddMMyyyy',它是'MMddyyyy'。見中間的'29'。那不可能是'MM'。 – 2013-03-22 08:29:46

+0

+ 1用於修飾它... – 2013-03-22 08:36:57

+0

非常感謝! – 2013-03-25 13:02:58

1

試試這個簡單而優雅的方法。

DateFormat dateParser = new SimpleDateFormat("'Available on 'MMddyyyy"); 
DateFormat dateFormatter = new SimpleDateFormat("'Available on 'dd/MM/yyyy"); 
String strDate = "Available on 03292013"; 
Date date = dateParser.parse(strDate); 
System.out.println(dateFormatter.format(date)); 
+0

plz給我一個勾號,如果你認爲我的答案是正確的。 – Drogba 2013-03-22 10:24:41

0

這應該做你想做的。請注意,我只是在操作String而沒有考慮它實際包含的內容(在這種情況下是一個日期)。

String strDate = "Available on 03292013"; 
String newStr = strDate.substring(0, 15) + "/" 
     + strDate.substring(15, 17) + "/" + strDate.substring(17); 
System.out.println(newStr); 

結果:

Available on 03/29/2013 
+0

@Adrian:爲whathaveyoutried.com鏈接+1。在發佈可能的答案之前,我應該閱讀它。 (我無法在那裏添加評論。) – Daniel 2013-03-22 08:57:57

相關問題