Формат, который вы анализируете, и используемый формат не совпадает.Вы ожидаете трехзначное поле и предоставляете только одну цифру.Это займет 9
и предполагает, что вы имеете в виду 009
, когда вы хотите 900
.Форматы даты являются сложными, и когда вы проверяете даты в другом формате, они могут анализировать их по-разному для вас.
В документации указано, что S
означает количество миллисекунд, а число в этом поле равно 9, поэтомуон ведет себя правильно.
РЕДАКТИРОВАТЬ: Этот пример может помочь
final SimpleDateFormat ss_SSS = new SimpleDateFormat("ss.SSS");
ss_SSS.setTimeZone(TimeZone.getTimeZone("GMT"));
for (String text : "0.9, 0.456, 0.123456".split(", ")) {
System.out.println(text + " parsed as \"ss.SSS\" is "
+ ss_SSS.parse(text).getTime() + " millis");
}
печать
0.9 parsed as "ss.SSS" is 9 millis
0.456 parsed as "ss.SSS" is 456 millis
0.123456 parsed as "ss.SSS" is 123456 millis