Вот мой код в Java 1.6 (вопрос был отмечен дубликат, но предложенное решение относится к Java 1.8)Проблемы, связанные с преобразованием временной метки
public static void main(String[] args){
try{
String dateTimeString = "2015-08-10-14.20.40.679279";
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd-HH.mm.ss.SSSSSS");
java.util.Date formattedDate = dateFormat.parse(dateTimeString);
Timestamp formattedTime = new Timestamp(formattedDate.getTime());
System.out.println(formattedTime);
} catch (Throwable t){
t.printStackTrace();
}
}
Приведенное объект: 2015-08-10 14:31:59.279
, так что явно что-то не так во время разбора минут, секунд и миллисов, я просто не знаю, что именно.
Спасибо!
Что такое '679279'? миллис (не выглядит правильно)? доли секунд (т. е. микросекунды, и в этом случае вам нужно избавиться от последних 3 цифр, потому что API дат поддерживает только миллисы)? – assylias
Основная часть упомянутой функциональности Java 8 (java.time) обратно переносится на Java 6 и 7 в проект [ThreeTen-Backport] (http://www.threeten.org/threetenbp/). Огромное улучшение по сравнению с трудными классами наследия, которые вы используете здесь. И классы java.time используют наносекундное разрешение (9 знаков после запятой), поэтому могут вместить ваши данные микросекунд (6 знаков после запятой) без потери данных и без хлопот. –