Конвертирование даты в java

289
21 ноября 2017, 21:36

Здравствуйте. Я хочу создать объект типа 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();
                }
            }
Answer 1

тогда вы получаете объект RandomData в переменной rd, а его пытаетесь парсить. Парсер, в свою очередь, ожидает объект типа стринг. Если у вас в классе RandomData переопределен метод toString(), а исходя из вывод я подозхреваю, что переопределен, то java.util.Date dddate = ssdf.parse(rd.random_date.toString()); исправит ситуацию

READ ALSO
NullPointerException в session hibernate

NullPointerException в session hibernate

Добрый день!

444
Object или параметризация?

Object или параметризация?

Когда мы пишем класс, но не знаем с какими объектами будем работать (допустим храниить переменную) мы можем просто задать переменную типа...

413
Гироскоп акселерометр android

Гироскоп акселерометр android

У меня есть webview,который открывает сайт с WebGl или CCS3DНа данном сайте есть кнопка,которая включает гироскоп

232
Как сделать подобное меню?

Как сделать подобное меню?

При добавлении bottom navigation view получается такое меню

273