2013-07-29 3 views
3

Я столкнулся с действительно странной проблемой, которую я раньше не видел. У меня есть дата в миллисекундах и вы хотите отобразить ее как читаемую дату. Это мой код:SimpleDateFormat возвращает недопустимую дату

if (validUntil == 0) { 
    return activity.getResources().getString(R.string.forever); 
} else { 
    Date startDate = new Date(validFrom); 
    Date endDate = new Date(validUntil); 
    if (startDate.compareTo(endDate) < 0) { 
    String date = sdf.format(startDate) + " - " + sdf.format(endDate); 
    return date; 
    } else if (startDate.compareTo(endDate) == 0) { 
    return activity.getResources().getString(R.string.forever); 
    } 
} 

Как вы можете видеть, я просто хочу создать строку, которая показывает временной интервал. Когда я отлаживаю свой код, объекты даты содержат правильные значения, а sdf.format(...) дает мне недопустимую дату.

Пример:

  • startdate в миллисекунды: 1375017555000
  • startdate объект содержит: Sun Jul 28 15:19:15 CEST 2013
  • sdf.format(startDate) возвращается: 28.19.2013

я получаю результат для предложения этого типа даты окончания.

Что я делаю неправильно?

+5

разместить шаблон для SDF. вероятно, вы помещаете mm вместо MM – Blackbelt

+1

Угадайте: вы используете 'm' вместо' M' в течение нескольких месяцев. – mthmulders

+0

Можете ли вы опубликовать [SSCCE] (http://sscce.org/)? Это поможет каждому лучше понять ваш код и быстрее ответить. В этом конкретном случае вы можете отредактировать свой вопрос и показать, как вы объявили 'sdf'. – araknoid

ответ

9

Возможно, вы использовали mm для обозначения months, но это должно быть MM. Посмотрите на documentation.

М месяц в год

м минут в час

Try:

SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy"); 
+0

Спасибо, что это! – joshplusa

5

Вы получаете минут вместо месяцев. Ваш шаблон должен выглядеть следующим образом: «dd.MM.yyyy»

+0

Большое спасибо, что была ошибкой! – joshplusa

0

Похоже, что строка формата даты неверна. Это работает:

public static void dateFormat(){ 
     SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); 
     System.out.println(format.format(new Date())); 
    } 

Результат:

2013-07-29

Смежные вопросы