0

opencsv を介して csv ファイルからデータをインポートして、mysql DB に挿入しています。opencsv は文字列としてインポートされ、DB の 1 つのフィールドについては、yyyy-MM-dd の形式で現在まで解析する必要があります。しかし、私はエラーが発生しています。

// This is the string that I have extracted from the csv file           
String elem1 = nextLine[0];

// printing out to console I can see the string I wish to convert
System.out.println(elem1); => 2015-08-14

// Below is my code to parse the date

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date convertedCurrentDate = sdf.parse(elem1);
String date=sdf.format(convertedCurrentDate );

// printing date to console gives me 2015-08-14
System.out.println(date);

上記のように、日付をコンソールに出力すると、2015-08-14 が返されます。ただし、次のエラーが表示されます。

java.text.ParseException: Unparseable date: "" 

誰かが私が間違っていることについてアドバイスをくれますか?

「java.util.Date convertCurrentDate = sdf.parse(elem1);」という行 エラーの原因となっている行です。

ありがとう!

4

2 に答える 2

1

私のマシンで次のテストパスも困惑しています

public class DateFormatterTest {

private static final String TEST_DATE = "2015-08-14";

   @Test
   public void SimpleDateFormatTest() throws ParseException {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
      java.util.Date convertedCurrentDate = sdf.parse(TEST_DATE);
      String date=sdf.format(convertedCurrentDate );
      assertEquals(TEST_DATE, date);
   } 

}

実行している Java のバージョンは何ですか? 最新の Java 8 (8u61) と JodaTime に問題があったことは知っています。

また、日付コード以外のすべてを排除する上記のテストを試してください。

于 2015-08-22T00:12:52.827 に答える
0

これを行う簡単な例を次に示します。

SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy");
String dateInString = "7-Jun-2013";
try {
    Date date = formatter.parse(dateInString);
    System.out.println(date);
    System.out.println(formatter.format(date));
} catch (ParseException e) {
    e.printStackTrace();
}

Java 8 アップデート

String string = "August 21, 2015";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMMM d, yyyy", Locale.ENGLISH);
LocalDate date = LocalDate.parse(string, formatter);
System.out.println(date); // 2015-09-21

私はこれがあなたが望むものだと思います.喜んでお手伝いします

于 2015-08-21T16:18:00.217 に答える