2017-02-21 9 views
-2

В android, я получаю неправильную дату при разборе. Я предоставляю 22 Feb (Wednesday). Почему это дает мне неправильный рабочий день (воскресенье)? Проверьте снимок экрана ниже, чтобы увидеть полный код со значениями.date parse, дающий неправильную дату в android

SimpleDateFormat format = new SimpleDateFormat("dd MMM (EEEE)"); 
try { 
    Date date = format.parse(strDate); 
    Calendar c = Calendar.getInstance(); 
    c.setTime(date); 
    c.add(Calendar.DATE, 2); 
    String output = format.format(c.getTime()); 
    tvDeliveryDate.setText(output); 
    tvDeliveryTime.setText(time); 
    deliveryDateTime = output + "," + time; 
    db.putString("deliver_date",output); 
    db.putString("deliver_time",time); 
    db.putString("deliver_date_time",output + ", " + time); 
} catch (ParseException e) { 
    e.printStackTrace(); 
} 

Screenshot Image

+0

Пожалуйста, поделитесь тем, что не так? год? Опишите –

+0

SimpleDateFormat format = new SimpleDateFormat ("dd MMM (EEEE) YYYY"); попробуйте использовать этот –

+0

или вам нужно передать параметр strDate в функцию с годом –

ответ

5

Ваш формат даты не имеет компонент год, поэтому 1970 предполагается. В 1970 году 22 февраля было воскресенье.

Из документации SimpleDateFormat.parse():

Эта операция синтаксического анализа использует календарь, чтобы произвести Date. Все поля даты и времени календаря очищаются до разбора, а значения по умолчанию для поля даты используются для любой отсутствующей информации о дате. Например, значение года проанализированного Date составляет 1970 год с GregorianCalendar, если значение года не указано из операции синтаксического анализа.

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

  • Нет связанных вопросов^_^