从日期选择器获取日期
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.format
将Date
对象转换为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"
【讨论】:
以上是关于从日期选择器获取日期的主要内容,如果未能解决你的问题,请参考以下文章
当用户从日期选择器中选择日期时,如何在下拉列表中获取特定的星期几?