2017-09-01 57 views
0

我想从datepicker中获取所选日期,但无法获得正确的值。我的代码如下。Android的DatePicker值显示错误的值

View mView = getLayoutInflater().inflate(R.layout.set_date_layout, null); 

    dialog = new MaterialDialog.Builder(RemainderActivity.this); 
    dialog.title(R.string.set_date); 

    datePicker = (DatePicker) mView.findViewById(R.id.datePickerRemainder); 


    dialog.customView(mView, true); 
    dialog.positiveText(R.string.confirm_date); 
    dialog.negativeText(android.R.string.cancel); 
    dialog.cancelable(false); 
    dialog.onPositive(new MaterialDialog.SingleButtonCallback() { 
     @Override 
     public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) { 

      DateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 
      Log.d("YEAR", datePicker.getYear()+""); //Shows correct year as 2017 
      Date date = new Date(datePicker.getDayOfMonth(), (datePicker.getMonth() + 1),datePicker.getYear()); // Wrong date as 09-04-1907 
      String dateString = df.format(date); 
      txt_remainder_date_add.setText(dateString); 
     } 
    }); 
    dialog.build(); 
    dialog.show(); 
+0

你想什么日期选择和你包括两个! – phpdroid

+0

我想选择2017年9月2日它显示08年8月8日..如果我选择01年9月01日它显示04年9月1907 –

+0

因为在日期选择器月从0开始而不是从1开始,请参阅我的代码如下,并尝试使用它,希望它适用于你 –

回答

0
private void datepicker() { 
    // Get Current Date 
    final Calendar c = Calendar.getInstance(); 
    int mYear = c.get(Calendar.YEAR); 
    int mMonth = c.get(Calendar.MONTH); 
    int mDay = c.get(Calendar.DAY_OF_MONTH); 

    DatePickerDialog datePickerDialog = new DatePickerDialog(this, R.style.DialogTheme, 
      new DatePickerDialog.OnDateSetListener() { 

       @Override 
       public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 

        date_time = dayOfMonth + "-" + (monthOfYear + 1) + "-" + year; 
txt_remainder_date_add.setText(date_time); 
       } 
      }, mYear, mMonth, mDay); 
    datePickerDialog.show(); 
} 

凡在样式定义我DialogTheme:

<style name="DialogTheme" parent="Theme.AppCompat.Light.Dialog"> 
    <item name="colorAccent">@color/colorPrimary</item> 
</style> 

调用此方法在任何你想

+0

这是否适用于23以下的api? –

+0

是@SharaafNazeer它将工作完全良好api15至25 –

+0

我得到的这里是2-9-2017 ..我怎样才能使它成为02-09-2017? –

0

根据这一Link

您使用过时的代码在下面的行中:

Date date = new Date(datePicker.getDayOfMonth(), (datePicker.getMonth() + 1),datePicker.getYear()); 

而不是使用日期类尝试日历类对象是这样的...

Calendar cal = Calendar.getInstance(); 
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
System.out.println(sdf.format(cal.getTime())); 

你可以参考这个Link例如...