【发布时间】:2017-04-10 12:23:10
【问题描述】:
我已经为我的应用程序创建了这个 datePicker,并且我将它设置为在用户选择日期后显示 Toast。这只是在我继续做其他事情之前的一个测试,但是,当我选择一个日期时,它会显示错误的年份。例如,当我选择今天的日期时,Toast 会显示:“Date is: 3917-04-10”。
public class SelectDateFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener
{
SimpleDateFormat dateFormatter;
Date start;
String entered_Start;
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
final Calendar calendar = Calendar.getInstance();
int yyyy = calendar.get(Calendar.YEAR);
int mm = calendar.get(Calendar.MONTH);
int dd = calendar.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), this, yyyy, mm, dd);
}
public void onDateSet(DatePicker view, int yyyy, int mm, int dd)
{
start = new Date(yyyy,mm,dd);
dateFormatter = new SimpleDateFormat("yyyy-MM-dd");
entered_Start = dateFormatter.format(start);
Toast.makeText(getActivity(), "Date is: "+ entered_Start, Toast.LENGTH_LONG).show();
}
}
感谢任何帮助。
编辑:我修好了。我所要做的就是改变这一行:
start = new Date(yyyy,mm,dd);
到这条线:
start = calendar.getTime();
【问题讨论】:
-
您是否设置了
dateFormat?默认日期选择器日期格式为Default: "mm/dd/yy" -
您使用的已弃用的
Date构造函数将 1900 添加到年份。因此,如果你将 2017 传递给它,你会得到一个 3917 的日期。如果你应该使用它(不推荐),你需要将 117 传递给 2017。
标签: java android date datepicker