Как преобразовать даты в формате String в даты в формате Date? - PullRequest
0 голосов
/ 21 марта 2012

У меня есть строка с датами, которая выглядит так: «20120316 20120317 20120318» ... Я храню эти даты в этом формате, но я хотел бы сделать массив дат из этих чисел в формате 03/16 03/1703/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 ]

3 голосов
/ 21 марта 2012

или что

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 голос
/ 21 марта 2012

Вот что я рекомендую:

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 /8248642/kak-preobrazovat-daty-v-formate-string-v-daty-v-formate-datecomment12475521_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));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...