2012-03-20 23 views
0

「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; 

     } 

だから、最初の私は、最初のforループは役に立たないかもしれないことを、文字列の日付(DailyDatasOnce)で文字列の配列を作るが、私はそれをスキップすることができます。今、私は日付配列を作成し、それに日付を入れたいと思います。私は、私が望むフォーマットに日付をフォーマットしてから、それらを日付フォーマットに変換しようとします。 String newDateStrが機能するまでは、日付のタイプを変更することができます。 しかし、最後の行で構文エラーが発生します。型が一致しません:java.util.dateからjava.sql.dataに変換できません。 私はこの問題を疑っていますが、それができない場合はどうしたらいいですか?

+0

は 'インポートjava.sqlのを置き換えること:

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

はここで完全なデモです.Date; 'と' import java.util.Date; 'を使います。それはエラーの原因です。 – zapl

答えて

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)); 

次の2つの日付を必要としない、ただ一つ。 からからの形式が必要です。

java.util.Dateである必要があります。あなたは、コレクションを持っている場合は

、ちょうどこの操作を行います。

String [] dateStrings = datesOnce.split(" "); 
List<Date> dates = new ArrayList<Date>(); 
for (String dateString : dateStrings) { 
    dates.add(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)); 
     } 
    } 
} 
+0

これを日付配列に挿入するにはどうすればよいですか?明白な質問を申し訳ありません私はbeignnerです –

+0

私はあなたを示したと思いますか?私はあなたのためにそれを綴りましょう。 – duffymo

+0

私は理由を知りませんが、13400000000と00000000のようなデータが得られます –

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; 
} 
+0

ありがとう、その仕事も同様ですが、私はachartengineに値を入れたときと同じ問題です。私はたぶん執拗な質問でそれを尋ねます。 –

+0

あなたは、achartengineがその形式の日付文字列を扱うことができますか?たぶん、別の入力を期待しているかもしれません。 – zapl

+0

http://www.achartengine.org/content/demo.htmlご覧のとおり、ユーザーはそれを処理する任意の日付タイプを定義できます。私は非常に普通のフォーマットを試してみましたが、同じ番号を取得します –

関連する問題