#java #parsing #date #time
#java #синтаксический анализ #Дата #время
Вопрос:
У меня есть следующий код для простого преобразования даты и времени в формат
SimpleDateFormat sdfClient = new SimpleDateFormat("yyyyMMddhhmmss.s");
SimpleDateFormat sdfFormat = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
pmList.add(sdfClient.format(sdfFormat.parse(pmData[k].retrievalTime)));
Хочу изменить формат на sdfClient, но по какой-то причине eclipse выдает ошибку:
java.text.ParseException: Unparseable date: "20140623135000.0"
at java.text.DateFormat.parse(DateFormat.java:357)
at com.syntronic.client.GenerateCSV.writepmData(GenerateCSV.java:220)
at com.syntronic.client.GenerateCSV.writeMEData(GenerateCSV.java:187)
at com.syntronic.client.GenerateCSV.<init>(GenerateCSV.java:87)
at com.syntronic.client.Client.main(Client.java:213)
Кто-нибудь знает причину этого?
Комментарии:
1. Я предполагаю, что
pmData[k]
он содержит формат первого рода, но сначала вы анализируете его как второй вид. Попробуйте поменять местами вызовы, используяsdfClient
иsdfFormat
.2. Какой тип у массива pmData [k]? sdfFormat.parse() принимает тип string в качестве параметра.
Ответ №1:
Все должно быть как раз наоборот:
pmList.add(sdfFormat.format(sdfClient.parse(pmData[k].retrievalTime)));
Объяснение:
pmList.add(
sdfFormat.format( <-- Gives a string 23/06/2014 01:50:00
sdfClient.parse( <-- Gives a Date corresponding to the time 20140623135000.0
pmData[k].retrievalTime <-- Time 20140623135000.0
)
)
);
Ответ №2:
У вас есть свой форматировщик и синтаксический анализатор
pmList.add(sdfClient.format(sdfFormat.parse(pmData[k].retrievalTime)));
В основном говорится, "yyyyMMddhhmmss.s".format("dd/MM/yyyy hh:mm:ss".parse(...))
Вы хотите использовать
pmList.add(sdfFormat.format(sdfClient.parse(pmData[k].retrievalTime)));
Вместо этого…