从日期选择器获取日期

Posted

技术标签:

【中文标题】从日期选择器获取日期【英文标题】:getdate from datepicker android 【发布时间】:2012-01-14 14:15:27 【问题描述】:

我想从我尝试过的 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 格式以将其存储在数据库中。

我也尝试像这样连接 year-month-day 但问题是例如今天 2011-12-7 日期应该是 07 才有效

请你帮帮我。

【问题讨论】:

哇,srsly DatePicker 没有 getDate 方法???安卓/谷歌 cmon。 【参考方案1】:

我用这个:

    /**
 * 
 * @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();

【讨论】:

这在很大程度上对我有用,除了我需要将 DatePicker 定义为 android.widget.DatePicker 。谢谢:) 如果您使用的是 Kotlin,您甚至可以使用更优雅的way。 非常感谢,伙计。【参考方案2】:

您应该使用SimpleDateFormat.formatDate 对象转换为String,如下所示

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

我认为你只是把它倒过来了。您需要使用format 从日期转为字符串,使用parse 从字符串转为日期。

【讨论】:

更改了这样的代码 Date date1= (Date) new Date(dpBirthDate.getYear(), dpBirthDate.getMonth(), dpBirthDate.getDayOfMonth());日期 =new SimpleDateFormat("yyyy-MM-dd").format(date1);我得到了什么 3911-12-07 出了什么问题 那么在传入之前检查一下 Date 对象的年份 如何修复日期格式,请帮忙!我总是用 3911 获得日期策略 那么您创建的 Date 对象不正确。正如我所说,您应该调试实际值是什么。如果您查看Date 的文档,您会看到您传入的年份必须是“年份减去 1900”,所以这可能是您的错误。 Java 的Date 对象必须小心处理。 谢谢你现在很清楚我应该做 3911 -1900 来获得正确的 2011 年【参考方案3】:

我知道这是旧的,但我很难找到它。所以为了后代

场景:视图需要 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();
            
        );
    

希望这对某人有所帮助

【讨论】:

【参考方案4】:

如果您的格式像数字一样简单,

例如: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"

【讨论】:

以上是关于从日期选择器获取日期的主要内容,如果未能解决你的问题,请参考以下文章

当用户从日期选择器中选择日期时,如何在下拉列表中获取特定的星期几?

从 JQUERY 日期选择器中获取价值

Angular 7从Kendo UI日期选择器获取选定日期的值

如何从 vuetify 上的多个日期选择器获取日期?

如何从角度材料日期选择器获取当前时间?

从日期选择器中获取价值