DateFormat产生错误的一年

时间:2016-01-18 05:14:45

标签: android android-datepicker android-date

Date picker

上面的图片是日期选择器,点击OK后,结果如下所示。

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));
}
}

预期值是2016年1月18日,为什么显示1916年1月18日?

2 个答案:

答案 0 :(得分:9)

根据源代码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。

尝试,

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 :(得分:0)

像这样使用

@chapter.place = params[:chapter][:place]