我知道这是一个重复的问题,但是我仍然无法解决。
显示当前日期的日历示例:19/2/19 用户选择:2019年1月20日
问题: 日历将显示当前日期,而不是用户选择的日期。 非常感谢。
已更新
我能够从日期选择器对话框中获取选定的日期并在textview中显示。 但现在我希望日历在textview中显示相同的日期,而不显示当前日期。
示例:用户选择的日期:21/1/2019,日历应显示日期:21/1/2019,而不是当前日期22/2/2019 谢谢:)
答案 0 :(得分:1)
日历显示0到11个月。使用以下功能。
private int mYear, mMonth, mDay;
private String selectedDate;
Calendar cal;
将此代码放在您的活动的OnCreate中
cal = Calendar.getInstance();
Date c = cal.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
selectedDate = df.format(c);
mYear = cal.get(Calendar.YEAR);
mMonth = cal.get(Calendar.MONTH);
mDay = cal.get(Calendar.DAY_OF_MONTH);
现在将其放在您的按钮上
private void showDatePicker() {
// This will show you previously selected date.
cal.set(Calendar.MONTH, mMonth);
cal.set(Calendar.DATE, mDay);
cal.set(Calendar.YEAR, mYear);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
mMonth = monthOfYear;
mDay = dayOfMonth;
mYear = year;
//2018-08-15
selectedDate = year + "-" + ((monthOfYear + 1)) + "-" + (dayOfMonth);
tvDate.setText(selectedDate);
}
}, mYear, mMonth, mDay);
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.show();
}
答案 1 :(得分:1)
全局声明:
Calendar c = Calendar.getInstance();
和
private void showDatePicker() {
long timeInMillis = getmilifromdate(tvDate.getText().toString);
c.setTimeInMillis(timeInMillis);
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
//2018-08-15
selectedDate = year + "-" + ((monthOfYear + 1)) + "-" + (dayOfMonth);
c.set(year, monthOfYear, dayOfMonth);
tvDate.setText(selectedDate);
}
}, mYear, mMonth, mDay);
datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
datePickerDialog.show();
}
编辑
从时间获取时间毫秒
public long getmilifromdate(String datei) // 2015-11-21
{
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd);
date = sdf.parse(datei);
} catch (Exception e) {
e.printStackTrace();
}
return date == null ? System.currentTimeMillis() : date.getTime();
}
答案 2 :(得分:0)
日历类在onDateSet回调中显示0到11个月。
请考虑以下文档
https://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener
因此您必须将月份增加1。
我认为现在对您来说很清楚。