【问题标题】:Casting and getting values from date picker and time picker in android在android中从日期选择器和时间选择器中转换和获取值
【发布时间】:2011-02-05 06:09:13
【问题描述】:

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

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

我们可以使用name.getText().toString()来转换它的数据。

同样地,我们如何将 DatePicker 和 TimePicker 的值转换为字符串???

【问题讨论】:

    标签: android android-datepicker android-timepicker


    【解决方案1】:

    日期选择器有

    getYear() 
    getMonth() 
    getDayOfMonth()
    

    要从 DatePicker 中创建一个 Date 对象,您需要 new Date(datePicker.getYear() - 1900, datePicker.getMonth(), datePicker.getDayOfMonth());

    请注意,此构造函数是deprecated in API level 1 - 请refer to andrescanavesi's answer 获取更合适的创建日期对象的方法。

    TimePicker 有

    getCurrentHour()
    getCurrentMinute()
    

    【讨论】:

    • 你能举个例子吗???初始化日期和时间对象时出现错误
    • @Jin 谢谢你!发现有帮助
    • 并且,对于那些使用 Joda 的人,请使用 new DateTime(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth(), 0, 0)
    • 虽然这是获取日期的有效方式,但datePicker.getCalendarView().getDate() 可能是回答给定问题的更准确方式;所以你可以把它用作new Date(datePicker.getCalendarView().getDate())
    • 在时间选择器的情况下,我以整数的形式获得小时和分钟。所以小时是integer,分钟是integer。如何获取日期对象来存储时间?
    【解决方案2】:

    我用这个:

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

    【讨论】:

    • 注意,这实际上会将返回的Date 的时间设置为当前时间,而不是午夜。
    • 不错的方法。但是你能添加TimePicker相关代码吗?问题是关于DatePicker + TimePicker
    • 添加这个以包括时间选择器中的小时和分钟 calendar.set(Calendar.HOUR, expDate_hours); calendar.set(Calendar.MINUTE, expDate_mins);其中 expDate_hours 和 _mins 在时间选择器的 OnTimeChangedListener 中的 onTimeChanged 中设置。
    【解决方案3】:
    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()));
    
    }
    

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 这以及继承自DateFormatSimpleDateFormat 绝对是恕我直言最好和最干净的方式
      【解决方案5】:

      综合所有答案,并从中制作了一个代码sn-p。

      在您的班级顶部导入 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。这会在最后为您提供一个字符串,可以将其存储或发送到服务器。

      【讨论】:

        【解决方案6】:

        我会这样做:

            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());
        

        p.s dp 和 tp 是 android 中的日期选择器和时间选择器。

        【讨论】:

          【解决方案7】:

          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);
           }
          

          希望对您有所帮助。

          日本

          【讨论】:

            【解决方案8】:
            StringBuilder sb=new StringBuilder();
                    sb.append(myYear).append("-").append(myMonth).append("-").append(myDay);
                String str=sb.toString();
                edittext.setText(str);
            

            【讨论】:

              【解决方案9】:

              请尝试以下格式,例如: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()));
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2012-05-07
                • 1970-01-01
                • 2011-08-14
                • 1970-01-01
                • 2011-02-20
                • 2012-09-11
                • 2018-11-23
                • 1970-01-01
                相关资源
                最近更新 更多