Здравствуйте. Я хочу создать объект типа Date и при создании я ему присваиваю значение из строки из коллекции. Но выдается ошибка:
Exception in thread "main" java.text.ParseException: Unparseable date: "23-11-2016"
at java.base/java.text.DateFormat.parse(DateFormat.java:388)
at com.app001.Main.main(Main.java:137)
Но когда я в парсере прописываю дату, то он нормально работает. В чем может быть проблема?
Так не работает:
SimpleDateFormat ssdf = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
java.util.Date dddate = ssdf.parse(rd.random_date);
А вот так работает:
SimpleDateFormat ssdf = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
java.util.Date dddate = ssdf.parse("12-12-2012");
Код:
class RandomData{
public String random_date;
public String random_latin_characters;
public String random_cyrilic_characters;
public int random_number;
public double random_double;
public RandomData(String d, String s1, String s2, int numb, double d1){
random_date = d;
random_latin_characters = s1;
random_cyrilic_characters = s2;
random_number = numb;
random_double = d1;
}
}
String[] strArray;
int countRows = 0, countAdded = 0;
String file = "D:\\1\\1\\0.txt";
String userName = "root";
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
ArrayList<RandomData> rndData = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\1\\1\\1.txt")))) {
while ((line = br.readLine()) != null) {
//countRows++;
strArray = line.split(Pattern.quote("||"));//Тут нормально работает сплит!!!!!!!
String[] dd = strArray[0].split(Pattern.quote("."));
System.out.println(strArray[0]);
System.out.println(strArray[1]);
System.out.println(strArray[2]);
System.out.println(strArray[3]);
System.out.println(strArray[4]);
//String d11 = dd[2]+"-"+dd[1]+"-"+dd[0];
//d11.trim();
rndData.add(new RandomData(strArray[0], strArray[1], strArray[2], Integer.valueOf(strArray[3]),Double.parseDouble(strArray[4].replace(",","."))));
}
}
System.out.println("CountRows "+rndData.size());
String userPassword = "root";
String connectionURL = "jdbc:mysql://localhost:3306/testdb";
Class.forName("com.mysql.jdbc.Driver");
try(Connection conn = DriverManager.getConnection(connectionURL,userName,userPassword)){
Statement st = conn.createStatement();
for(RandomData rd:rndData){
//String sql = "INSERT INTO somedata VALUES(\'"+rd.random_date+"\',\'"+rd.random_latin_characters+"\',\'"+rd.random_cyrilic_characters+"\',\'"+rd.random_number+"\',\'"+rd.random_double+"\');";
//System.out.println(sql);
//st.executeUpdate(sql);
System.out.println("1111 "+rd.random_date);
SimpleDateFormat ssdf = new SimpleDateFormat("dd-MM-yyyy", Locale.getDefault());
java.util.Date dddate = ssdf.parse(rd.random_date.toString());
System.out.println(dddate);
PreparedStatement stmt = conn.prepareStatement("INSERT INTO somedata VALUES (?,?,?,?,?)");
stmt.setDate(1,new java.sql.Date(dddate.getTime()));
stmt.setString(2,rd.random_latin_characters);
stmt.setString(3,rd.random_cyrilic_characters);
stmt.setInt(4,rd.random_number);
stmt.setDouble(5,rd.random_double);
stmt.executeUpdate();
}
}
тогда вы получаете объект RandomData в переменной rd, а его пытаетесь парсить. Парсер, в свою очередь, ожидает объект типа стринг. Если у вас в классе RandomData переопределен метод toString(), а исходя из вывод я подозхреваю, что переопределен, то java.util.Date dddate = ssdf.parse(rd.random_date.toString()); исправит ситуацию
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Когда мы пишем класс, но не знаем с какими объектами будем работать (допустим храниить переменную) мы можем просто задать переменную типа...
У меня есть webview,который открывает сайт с WebGl или CCS3DНа данном сайте есть кнопка,которая включает гироскоп