27

我的应用程序中有一个DatePicker和一个TimePicker。谁能告诉我如何获取所选日期和时间的值???我的意思是,因为EditText我们可以声明为

final EditText name = (EditText) this.findViewById(R.id.nametext);

我们可以使用name.getText().toString().

同样,我们如何将 DatePicker 和 TimePicker 的值获取到 String ???

4

9 回答 9

54

日期选择器有

getYear() 
getMonth() 
getDayOfMonth()

从你会做的 DatePicker 制作一个 Date 对象new Date(datePicker.getYear() - 1900, datePicker.getMonth(), datePicker.getDayOfMonth());

请注意,此构造函数在 API 级别 1 中已弃用- 请参阅 andrescanavesi 的答案以获取更合适的创建 Date 对象的方法。

时间选择器有

getCurrentHour()
getCurrentMinute()
于 2010-04-07T12:59:27.863 回答
28

我用这个:

    /**
 * 
 * @param datePicker
 * @return a java.util.Date
 */
public static java.util.Date getDateFromDatePicket(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();
}
于 2013-01-29T18:56:45.947 回答
5
date=(EditText)findViewById(R.id.date_of_birth_textfield);

date.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 showDialog(DATE_DIALOG_ID);

            }
        });


        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);

updateDisplay();

protected Dialog onCreateDialog(int id) {
        switch(id)
        {
        case DATE_DIALOG_ID:
            return new DatePickerDialog(this,
                    mDateSetListener,
                    mYear, mMonth, mDay);
}
return null
}

private DatePickerDialog.OnDateSetListener mDateSetListener= new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
            // TODO Auto-generated method stub
            System.out.println("calendar view shown.."+view.getCalendarViewShown());
        c.set(Calendar.YEAR, year);
              c.set(Calendar.MONTH, monthOfYear);
              c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
              mYear = c.get(Calendar.YEAR);
                mMonth = c.get(Calendar.MONTH);
                mDay = c.get(Calendar.DAY_OF_MONTH);
                updateDisplay();
           // mMonth = monthOfYear;
           // mDay = dayOfMonth;

        }
    };

private void updateDisplay() {
        date.setText(
                new StringBuilder()
                // Month is 0 `based` so add 1


                .append(mYear).append("-").append(mMonth + 1).append("-").append(mDay).append(""));
        //date.setText(fmtDateAndTime.format(c.getTime()));

}
于 2012-06-26T06:08:11.373 回答
4

我建议查看 android 中的DateFormat类。小心导入 android 文档中提到的 DateFormat。之后,您想要实现的任何格式都非常简单。对于基本的 2012 年 8 月 12 日,您可以执行此操作。

DatePicker myDatePicker = (DatePicker) findViewById(R.id.mydatepicker);
String selectedDate = DateFormat.getDateInstance().format(myDatePicker.getCalendarView().getDate());

查看DateFormat类以获取各种其他配置。

于 2012-10-12T07:01:07.733 回答
3

结合所有答案并从中制作代码片段。

在班级顶部导入 datePicker:

import android.widget.DatePicker;

在您的类中声明以下变量:

private DatePicker dobPicker;

这是在按钮单击事件中完成的代码:

 dobPicker = (DatePicker)findViewById(R.id.dobPicker);
        Integer dobYear = dobPicker.getYear();
        Integer dobMonth = dobPicker.getMonth();
        Integer dobDate = dobPicker.getDayOfMonth();
        StringBuilder sb=new StringBuilder();
        sb.append(dobYear.toString()).append("-").append(dobMonth.toString()).append("-").append(dobDate.toString()).append(" 00:00:00");
        String dobStr=sb.toString();

在 R.id.dobPicker 中,dobPicker 是布局 xml 文件中的 datePicker。这会在最后为您提供一个字符串,该字符串可以存储或发送到服务器。

于 2012-08-22T08:40:29.067 回答
2

getDateTimeFromPickers()

从 DatePicker 和 TimePicker 获取日期和时间的简单方法

警告:它使用JodaTimeDateTime作为回报。您可以修改它以使用您喜欢的任何内容。

 // Gets the Date and Time from a DatePicker and TimePicker and return a JodaTime DateTime from them, in current timezone.
 //
 private DateTime getDateTimeFromPickers( int DatePickerId, int TimePickerId ) {
     DatePicker dp = (DatePicker) findViewById(DatePickerId);
     TimePicker tp = (TimePicker) findViewById(TimePickerId);

     String year    = Integer.toString(dp.getYear()) ;
     String month   = StringUtils.leftPad( Integer.toString(dp.getMonth() + 1), 2, "0" );
     String day     = StringUtils.leftPad( Integer.toString(dp.getDayOfMonth()), 2, "0" );
     String hour    = StringUtils.leftPad( Integer.toString(tp.getCurrentHour()), 2, "0" );
     String minutes = StringUtils.leftPad( Integer.toString(tp.getCurrentMinute()), 2, "0" );

     String dateTime = year + "-" + month + "-" + day + "T" + hour + ":" + minutes + ":00.000";

     return DateTime.parse(dateTime);
 }

希望有帮助。

J.P

于 2014-01-29T02:20:30.830 回答
2

我会这样做:

    Calendar calendar = Calendar.getInstance();
    calendar.set(dp.getYear(), dp.getMonth(), dp.getDayOfMonth(), Tp.getCurrentHour(), Tp.getCurrentMinute());
    DateFormat gmtFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    TimeZone gmtTime = TimeZone.getTimeZone("GMT");
    gmtFormat.setTimeZone(gmtTime);
    String mydate = ""+ gmtFormat.format(calendar.getTime());

ps dp 和 tp 是 android 中的日期选择器和时间选择器。

于 2015-10-20T14:29:52.860 回答
0

试试下面的格式,例如:2014 年 12 月 24 日。

            DatePicker datePicker = (DatePicker) findViewById(R.id.datepicker_inspection);
            SimpleDateFormat df = new SimpleDateFormat("dd MMMM yyyy");
            String inspectiondate = df.format(new Date(datePicker.getYear() - 1900, datePicker.getMonth(), datePicker.getDayOfMonth()));
于 2013-12-15T06:36:35.983 回答
0
StringBuilder sb=new StringBuilder();
        sb.append(myYear).append("-").append(myMonth).append("-").append(myDay);
    String str=sb.toString();
    edittext.setText(str);
于 2012-04-25T05:15:11.297 回答