如何将字符串格式日期转换为日期格式日期?

时间:2012-03-20 23:23:33

标签: android date

我有一个字符串,其日期如下:“20120316 20120317 20120318”...我以这种格式存储此日期,但我想用这些数字制作日期数组,格式为03/16 03/17 03/18 ......

到目前为止:

 String[] DailyDatasOnce2 = DatesOnce.split(" ");   

         DailyDatasOnce = new String[DailyDatasOnce2.length];
         for (int i=0;i< (DailyDatasOnce2.length) ;i++){
             DailyDatasOnce[i]=DailyDatasOnce2[i];
         }

         datumok = new Date[DailyDatasOnce.length];

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

            SimpleDateFormat curFormater = new SimpleDateFormat("yyyyMMdd"); 

            java.util.Date dateObj = null;
            java.util.Date dateObj2 = null;
            try {
                dateObj = curFormater.parse(DailyDatasOnce[i]);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            SimpleDateFormat postFormater = new SimpleDateFormat("MM/dd"); 

            String newDateStr = postFormater.format(dateObj); 

            try {
                dateObj2 = curFormater.parse(newDateStr);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            datumok[i] = dateObj2;

         }

所以首先我用字符串日期(DailyDatasOnce)创建一个字符串数组,也许第一个for循环没用,但我可以跳过它。现在我创建一个Date数组,我想把日期放入其中。我将日期格式化为我想要的格式,然后我尝试将它们转换为日期格式。在String newDateStr工作之前,我设法更改日期的类型。 但是我得到最后一行的语法错误:类型不匹配:无法从java.util.date转换为java.sql.data。 我怀疑问题,但如果不可能,我该怎么做?

2 个答案:

答案 0 :(得分:3)

public static String[] getDates(String longDateString) {
    SimpleDateFormat inputFormater = new SimpleDateFormat("yyyyMMdd");
    SimpleDateFormat outputFormater = new SimpleDateFormat("MM/dd");
    String[] inputDates = longDateString.split(" ");
    String[] outputDates = new String[inputDates.length];
    for (int i = 0; i < inputDates.length; i++) {
        try {
            Date date = inputFormater.parse(inputDates[i]);
            outputDates[i] = outputFormater.format(date);
        } catch (ParseException e) {
            outputDates[i] = "cannot parse"; 
        }
    }
    return outputDates;
}

答案 1 :(得分:1)

以下是我的建议:

DateFormat fromFormat = new SimpleDateFormat("yyyyMMdd");
fromFormat.setLenient(false);
DateFormat toFormat = new SimpleDateFormat("MM/dd");
toFormat.setLenient(false);
String fromDate = "20120316";
Date d = fromFormat.parse(fromDate); // this is a java.util.Date
System.out.println(String.format("date is %s", toFormat.format(d));

你不需要两个日期,只需一个;您需要来自格式。

必须是java.util.Date

如果您有一个集合,请执行以下操作:

String [] dateStrings = datesOnce.split(" ");
List<Date> dates = new ArrayList<Date>();
for (String dateString : dateStrings) {
    dates.add(fromFormat.parse(dateString));
}

您可以按照自己的方式格式化所有这些日期。

如果它必须是Date数组,请按以下方式执行:

String [] dateStrings = datesOnce.split(" ");
Date [] dates = new Date[dateStrings.length];
int i = 0; 
for (String dateString : dateStrings) {
    dates[i++] = fromFormat.parse(dateString);
}

这是一个完整的演示:

package homework;

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

/**
 * DateFormatDemo
 * @author Michael
 * @link http://stackoverflow.com/questions/9796520/how-to-convert-string-format-dates-to-date-format-dates/9796619#comment12475521_9796619
 * @since 3/20/12 8:55 PM
 */
public class DateFormatDemo {

    public static void main(String[] args) {
        String input = "20120316 20120317 20120318";
        DateFormat fromFormat = new SimpleDateFormat("yyyyMMdd");
        fromFormat.setLenient(false);
        DateFormat toFormat = new SimpleDateFormat("MM/dd");
        toFormat.setLenient(false);
        String [] dateStrings = input.split("\\s+");
        Date [] dates = new Date[dateStrings.length];
        int i = 0;
        for (String dateString : dateStrings) {
            try {
                dates[i++] = fromFormat.parse(dateString);
            } catch (ParseException e) {
                e.printStackTrace();
            }
        }
        for (Date d : dates) {
            System.out.println(toFormat.format(d));
        }
    }
}