2015-08-21 88 views
0

我正在通過opencsv從csv文件導入數據以插入到mysql數據庫中。 opencsv作爲字符串導入,併爲數據庫中的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 convertedCurrentDate'= sdf.parse(elem1);'是導致錯誤的行。

謝謝!

+0

你能指出哪條線路導致錯誤?它是: java.util.Date convertedCurrentDate = sdf.parse(elem1); 謝謝 –

+0

嘿Stack Player。是的,這是線。我編輯了原始問題以包含詳細信息。 – user1523236

+0

然後'elem1'顯然是空白字符串(顯然是因爲錯誤消息是這樣的)。 – Andreas

回答

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 

我認爲這是你想要.Happy幫助的感謝

+0

嘿阿南德 - 感謝您的回覆。我嘗試了你的建議,但得到了錯誤:文本'2015-08-14'無法在索引0處分析.cvs文件中的日期格式爲yyyy-MM-dd。所以我更新了上面的代碼來讀取:DateTimeFormatter formatter = DateTimeFormatter.ofPattern(「yyyy MM,dd」,Locale.ENGLISH);但這給了我一個錯誤:文本'2015-08-14'無法在索引4處解析。 - 任何想法? – user1523236

+0

首先你檢查你的系統日期格式,然後相同的格式你提供的代碼 –

+0

我認爲你的意思是我的mac上的日期格式?檢查它,它的格式相同 - 2015-08-21。時間是24小時制。不知道這是否重要。 – user1523236

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存在一個問題。

也嘗試上面的測試,消除一切,但日期代碼。

相關問題