有谁知道如何提取我的日期字符串&改变格式?

时间:2013-03-22 08:25:23

标签: java regex

我的字符串中有一个有效的日期:

String strDate = "Available on 03292013";

我想从strDate字符串&中提取日期。将其更改为Available on 03/05/2015

有谁知道我怎么能实现这个目标?

3 个答案:

答案 0 :(得分:2)

您可以通过执行以下步骤来实现此目的:

  • 首先,使用正则表达式“[^0-9]”从字符串中提取日期。
  • 接下来,使用SimpleDateFormat将提取日期的格式从“MMddyyyy”更改为 'MM / DD / YYYY'
  • 最后,您必须将格式化的日期字符串值附加到字符串“Available on”。

请查看以下代码,以便更清楚地了解实施情况。

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 :(得分: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));

答案 2 :(得分: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