|
|
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть файл MS Excel. В нем дата хранится в формате: 25-08-2017 03:53 Если открыть свойства столбца с датами в Excel, то формат такой: Custom ДД-ММ-ГГГГ чч:мм Когда подключаюсь к файлу и пытаюсь парсить вылазит ошибка: Код: java 1. 2. Вот функция которой пытаюсь парсить: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Прошу помочь, в чем ошибка? Использую Apache POI Спасибо заранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:06 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Шаблон не соответствует входящей строке, которую вы парсите. И переменные называйте, пожалуйста, с маленькой буквы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:12 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Август пришел с буквами. И черточки "-" забыл в шаблоне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:17 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
А каким должен быть шаблон для: 24-Aug-2017? Я второй день парюсь с этим, раньше с БД без проблем парсил, а в от с MS Excel траблы. Прошу подсказать корректный шаблон. Я испробовал все шаблоны что знал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:22 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
LiQuid, подожди. Ты писал выше Есть файл MS Excel. В нем дата хранится в формате: 25-08-2017 03:53 Если открыть свойства столбца с датами в Excel, то формат такой: Custom ДД-ММ-ГГГГ чч:мм Далее мы получаем текст экцепшена где явно видно что прилетела дата "24-Aug-2017". Разберись в каком формате все-таки приходит дата. А то ты нас запутаешь и себя запутал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:27 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
LiQuidВ нем дата хранится в формате: 25-08-2017 03:53 Первая ошибка - дата не хранится в Excel в этом формате, а только показывается. Из этого следует вторая ошибка - вы читаете дату как строковое значение, при чтении возникает другой формат, который вы и видите. Ничего парсить не надо (да и слово парсить не существует). В Excel дата хранится в числовом формате (которому в POI соответствует тип ячейки CellType.NUMERIC), читать это значение надо с помощью Cell.getDateCellValue(). Результат получается в виде java.util.Date. Пример Код: java 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:32 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Допустил опечатку. Надо if (cell.getCellTypeEnum().equals(CellType.NUMERIC)) функция getCellType() устарела, указал по привычке. Хотя можно и её использовать: if (cell.getCellType () == CellType.NUMERIC) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:45 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Partisan M читать это значение надо с помощью Cell.getDateCellValue(). Результат получается в виде java.util.Date. Кстати, да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 15:53 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
LiQuid, посмотри в свойствах ячейки. В той ячейке которая проблеманая. В каком формате представлена дата? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.08.2017, 18:14 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Доброе утро. Я получил данные: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Вышел результат Код: java 1. Мне эти данные нужно теперь залить в MS SQL Server в формате dd-MM-yyyy HH:mm Столбец в MS SQL Server типа datetime Но MS SQL Server не примет в формате Sun Aug 27 09:58:13 UZT 2017 Пыаюсь вставить в MS SQL Server но ругается на строке: finalDate = formatter.parse(date.toString()); Код ошибки: Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 08:06 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Извиняюсь там дата в обоих случаях Tue Jul 11 05:05:00 UZT 2017 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 08:16 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Ну дак ведь явно сообщается, что ваша дата не парсится. Прям даже если элементы в шаблоне посчитать и посмотреть разделители и сравнить Код: java 1. с тем что выводится в консоль Код: java 1. Но всё это ерунда вообще и не нужно, т.к. вы уже получили Date(), зачем ее сейчас опять в строку переводить и затем снова парсить получая тот же самый Date() который уже есть, извращенства чтоль какие-то у вас?))) Вы уже Date получили, дак сувайте его в майскуль, посредством той же Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 08:38 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Если вы хотите дату в виде строки отдавать майскулу, то тогда вам надо полученный Date() переводить в строку и её возвращать в вашем методе. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Должно работать, но я не проверял. И уже строку отдавайте майскулу, в вашем формате из df. А вообще этот метод надо бы разделить на два, первый получает дату из экселя, кстати почему она у вас new Date() сразу, так и надо? типа если не получили дату, то берем текущую дату? Второй метод конвертит вашу Date() в String(), пригодный для испорта в майскул ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 08:53 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Nixic, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Ну вообщем MS SQL разрешает строку ставить в столбец datetime НО: Некоторые записи не вставились, пишет вот так: Код: java 1. 2. 3. Из 1000 строк добавил 250 а остальные с такой ошибкой отвалились. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 09:14 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Хочу отметить что все строки стандартные по одному формату и пустых нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 09:17 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Вот чем они отличаются? Первая запись добавилась а вторая пишет ошибку Код: java 1. 2. Код: plsql 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 09:42 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Сейчас только чисто по SQL. Не беря в расчет Java-код. LiQuid, у тебя в SQL-запросе нигде явно не стоит кастинг в date с указанием формата. Отсюда возникает вопрос. Откуда MS-SQL знает где стоит день а где стоит месяц? Вот это значение: Код: java 1. Можно трактовать как MM-DD-YYYY а можно и наоборот как DD-MM-YYYY. Отсюда возможный кейс когда месяц номер 13 не существует. Я вообще в MS-SQL не разбираюсь. Но КМК в MS-SQL как и в Oracle есть некие дефолтные форматы дат которые зависят от того как ты залогонился. Напремер чел из России получит формат DD.MM.YYYY, американец свой родной Mon, DD YYYY и так далее. Вобщем конверть явно или конфигури environment явно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 10:18 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Nixic, Хорошо, Вот у меня чисто функция которая получает тип Date Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Функция вернет мне "Tue Jul 11 05:05:00 UZT 2017" Теперь мне нужно это вставить в MS SQL Server таблицу. Но формат столбца datetime в MS SQL Server не примет в таком виде. Столбец примит эту дату только в виде dd-MM-yyyy HH:dd Я же все равно должен буду этот формат как то осуществить? Если не превращать в String и обратно в Date, то как по другому? Мне же конечный результат нужен Date только в формате dd-MM-yyyy HH:dd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 10:50 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Если в виде String вставлять в MS SQL Server в столбец с форматом datetime, MS SQL Server не понимает про 00 т.е 24 часа ночи, если в формате Date отправить то он должен понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 10:53 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
LiQuidМне же конечный результат нужен Date только в формате dd-MM-yyyy HH:dd Это и есть строка. По майскулу ничего не знаю. Я бы подключился к нему средствами Java и сразу бы писал из нее в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 11:11 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
LiQuidЕсть файл MS Excelфайл в студию ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 12:40 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
Поддерживаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 13:24 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
LiQuidФункция вернет мне "Tue Jul 11 05:05:00 UZT 2017" Вовсе нет. Функция вернёт объект java.util.Date, который не имеет никакого формата, а "Tue Jul 11 05:05:00 UZT 2017" это его представление в виде строки, которое получилось автоматически, поскольку вы не задали самостоятельно никакого формата (поэтому используется формат даты-времени, установленный у вас в компьютере по умолчанию). Для получения другого текстового представления можно использовать SimpleDateFormat. Для вставки в базу даты, представленной строкой, надо использовать функцию приведения строки к дате, имеющуюся в используемой СУБД (такая функция есть во всякой СУБД, но её название надо узнавать из документации). Вы путаете MySQL и MS SQL Server, но всё же можно догадаться, что имеется ввиду MS SQL Server. Вот, смотрю в его документации функцию получения даты (точнее, вам нужен тип DATETIME) и вижу, что она называется CAST, например CAST('2007-05-08 12:35:29.123') Допустимые форматы и способ задания желаемого формата ищете в документации по функциям SQL нужной СУБД. Можно и не приводить дату к строке. Для этого вместо Statement использовать PreparedStatement. В нём в SQL вставляемые значения заменяются на "?", и для вставки фактических значений использовать операторы вроде String sql = "NSERT INTO dbo.TRAIN_DELIVERY VALUES(?,?,?)";//упростил выражение для примера PreparedStatement pstmt = connection.prepareStatement(sql); //задание значений pstmt.setDate (3, date);//3 - номер "?" по порядку, начиная с 1, date - значение типа java.sql.Date, надо получить его из имеющегося java.utils.Date ... int rowsCount = pstmt.executeUpdate();//также подойдёт execute(), подробнее см. в документации по JDBC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 14:38 |
|
||
|
Unparseable date: в коде
|
|||
|---|---|---|---|
|
#18+
ТС не путал MySQL и MS SQL, это я случайно подумал на майскул и написал про него, а про существование MS SQL я вообще забыл, как-то всё больше с первым сталкиваюсь)) ТС про MySQL ни слова не писал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.08.2017, 15:44 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=61&tid=2122625]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 370ms |

| 0 / 0 |
