У меня есть строка метки времени от службы, имеет 6 миллисекунд цифры:SimpleDateFormat - разбор метки времени с миллисекундами
String timestamp = "2014-09-30T15:30:00.777777";
Я разбор его следующим образом:
String format = "yyyy-MM-dd'T'HH:mm:ss.SSS";
DateFormat df = new SimpleDateFormat(format, Locale.ENGLISH);
Date date = df.parse(timestamp);
SimpleDateFormat df2 = new SimpleDateFormat();
System.out.println(df2.format(date));
Я ожидал увидеть :
"9/30/14 3:30 PM"
, но вместо этого я получаю:
"9/30/14 3:42 PM"
Двенадцать минут вперед. Я попытался использовать другую строку формата с цифрами 6 мс:
String format = "yyyy-MM-dd'T'HH:mm:ss.SSSSSS";
Тот же результат.
Кажется, что я должен сделать, это вручную усечение входящих строк временных меток до 3 мс цифр:
timestamp = timestamp.substring(0, timestamp.length()-3);
тогда я получаю ожидаемый результат. Или я могу использовать строку усеченного формата, которая игнорирует миллисекунды:
String format = "yyyy-MM-dd'T'HH:mm:ss";
Являются ли эти правильные решения? Я просто злоупотребляю SimpleDateFormat?
Спасибо
http://stackoverflow.com/questions/19223171/java-util-date-format-ssssss-if-not-microseconds-what-are-the-last-3-digits –