来自datepicker android的getdate

时间:2011-12-07 00:47:37

标签: java android date datepicker

我想从android中的datepicker小部件获取日期我试过这个

Date date1= (Date) new Date
   (dpBirthDate.getYear(), dpBirthDate.getMonth(), dpBirthDate.getDayOfMonth());
date1  = (Date) new SimpleDateFormat("yyyy-MM-dd").parse(date1.toString());

但是我得到了一个像mon 7 dec 2011 time这样的日期......而我想得的只是将yyyy-MM-dd格式存储到数据库中。

我还尝试将年 - 月 - 日连接起来,但问题是例如今天 2011-12-7 当天应该是07有效

你能帮帮我吗?

4 个答案:

答案 0 :(得分:65)

我用这个:

    /**
 * 
 * @param datePicker
 * @return a java.util.Date
 */
public static java.util.Date getDateFromDatePicker(DatePicker datePicker){
    int day = datePicker.getDayOfMonth();
    int month = datePicker.getMonth();
    int year =  datePicker.getYear();

    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day);

    return calendar.getTime();
}

答案 1 :(得分:13)

您应该使用SimpleDateFormat.formatDate个对象转换为String,就像这样

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateString = sdf.format(date1);

我认为你只是倒退了。您需要使用format从Date转换为String,并parse从String转换为Date。

答案 2 :(得分:2)

我知道这已经老了,但我很难找到它。所以后人

场景:视图需要yyyy-mm-dd中的日期

    date_field = (EditText)findViewById(R.id.input_date);
        date_field.setFocusable(false); // disable editing of this field
        date_field.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(final View v) {
                chooseDate();
            }
        });

 private void chooseDate() {
        final Calendar calendar = Calendar.getInstance();
        final int year = calendar.get(Calendar.YEAR);
        final int month = calendar.get(Calendar.MONTH);
        final int day = calendar.get(Calendar.DAY_OF_MONTH);
        DatePickerDialog datePicker =
            new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
                @Override
                public void onDateSet(final DatePicker view, final int year, final int month,
                                      final int dayOfMonth) {

                    @SuppressLint("SimpleDateFormat")
                    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                    calendar.set(year, month, dayOfMonth);
                    String dateString = sdf.format(calendar.getTime());

                    date_field.setText(dateString); // set the date
                }
            }, year, month, day); // set date picker to current date

        datePicker.show();

        datePicker.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(final DialogInterface dialog) {
                dialog.dismiss();
            }
        });
    }

希望这有助于某人

答案 3 :(得分:0)

如果您的格式很简单,比如数字,

例如:dd/MM/yyyy

您可以使用 Kotlin 方式:

val dp = binding.datePicker
val date =  "${dp.dayOfMonth.let { if(it < 10) "0$it" else it }}/${dp.month.plus(1).let { if(it < 10) "0$it" else it }}/${dp.year}"