2016-01-18 3 views
1

Date pickerDateFormat производят неправильный год

выше картина выбора даты, после того, как я нажимаю ОК, результат показан ниже.

Text View

Код, как следовать

public class DatePickerFragment extends DialogFragment 
    implements DatePickerDialog.OnDateSetListener { 

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 
    // Use the current date as the default date in the picker 
    final Calendar c = Calendar.getInstance(); 
    int year = c.get(Calendar.YEAR); 
    int month = c.get(Calendar.MONTH); 
    int day = c.get(Calendar.DAY_OF_MONTH); 

    // Create a new instance of DatePickerDialog and return it 
    return new DatePickerDialog(getActivity(), this, year, month, day); 
} 

public void onDateSet(DatePicker view, int year, int month, int day) { 
    // Do something with the date chosen by the user 
    Date date = new Date(year, month, day); 
    Fragment fragment = getActivity().getFragmentManager().findFragmentByTag(ConvocationAddDialogFragment.class.getName()); 
    TextView textView = (TextView) fragment.getView().findViewById(R.id.open_registration_date); 
    textView.setText(DateFormat.getDateInstance().format(date)); 
} 
} 

Ожидаемое значение 18 января 2016, почему это отображение 18 янв 3916?

ответ

8

В соответствии с исходным кодом new Date(year, month, day);

public Date(int year, int month, int day) { 
    GregorianCalendar cal = new GregorianCalendar(false); 
    cal.set(1900 + year, month, day); 
    milliseconds = cal.getTimeInMillis(); 
} 

Здесь Ваш 2016 год будут добавляться в 1900 году, которые приводят в 3916.

Try,

Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.YEAR, year); 
calendar.set(Calendar.MONTH, month); 
calendar.set(Calendar.DAY_OF_MONTH, day); 
Date date = calendar.getTime(); 
+1

Хорошо swer. Вы можете принять это. –

0

Используйте его, как это

public static class DatePickerFragment extends DialogFragment 
     implements DatePickerDialog.OnDateSetListener { 

    @NonNull 
    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     // Use the current date as the default date in the picker 
     tv_date= (TextView)getActivity().findViewById(R.id.tv_date); 
     final Calendar c = Calendar.getInstance(); 
     int year = c.get(Calendar.YEAR); 
     int month = c.get(Calendar.MONTH); 
     int day = c.get(Calendar.DAY_OF_MONTH); 

     DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day); 

     dialog.getDatePicker().setMinDate(c.getTimeInMillis()); 


     return dialog; 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) { 
     // Do something with the date chosen by the user 
     tv_date.setText(new StringBuilder().append(day).append("-") 
       .append(month+1).append("-").append(year)); 
     date=tv_date.getText().toString(); 
    } 
} 
Смежные вопросы