【问题标题】:Android Studio - Datepicker not showing calendar from current yearAndroid Studio - Datepicker 不显示当年的日历
【发布时间】:2016-10-01 05:06:54
【问题描述】:

在我的 Android 项目中,我有一个 DatePicker,它直接从 1900 年开始。

这里是源代码:-

private void selectDate()
{
    dpd = new DatePickerDialog(getActivity(),
            new DatePickerDialog.OnDateSetListener()
            {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
                {
                    c.set(year, monthOfYear, dayOfMonth);
                    selDate=year+"/"+monthOfYear+"/"+dayOfMonth;
                    Toast.makeText(getActivity(), dayOfMonth + "-" + (monthOfYear + 1) + "-" + year, Toast.LENGTH_LONG).show();
                }
            }, mYear, mMonth, mDay);
    dpd.show();
}

这是相同的屏幕截图:-

如您所见,日历从 1900 年开始,但我希望它从当前日期开始

另外,你可以看到左上角写着“2”,点击“2”我可以将年份更改为任何我想要的;但是我不想在我的日期选择器中出现“2”符号/我应该如何将名称“2”更改为“更改年份”文本?

应该怎么做?我需要在哪里进行必要的更改?

提前致谢。

我已按如下方式编辑了我的代码,现在我得到了当前日期,即 2016 年 10 月

private void selectDate()
{
    dpd = new DatePickerDialog(getActivity(),
            new DatePickerDialog.OnDateSetListener()
            {
                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
                {
                    c.set(Calendar.YEAR, year);
                    c.set(Calendar.MONTH, monthOfYear);
                    c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                    selDate=year+"/"+monthOfYear+"/"+dayOfMonth;
                    Toast.makeText(getActivity(), dayOfMonth + "-" + (monthOfYear + 1) + "-" + year, Toast.LENGTH_LONG).show();
                }
            }, mYear, mMonth, mDay);
    dpd.getDatePicker().setMinDate(System.currentTimeMillis());
    dpd.show();
}

这是更新后的截图:

【问题讨论】:

标签: android android-studio datepicker


【解决方案1】:

查看这段代码 sn-p

   DatePickerDialog dpd = new DatePickerDialog(MainActivity.this,
                new DatePickerDialog.OnDateSetListener() {
                    final Calendar myCalendar = Calendar.getInstance();
                    @Override
                    public void onDateSet(DatePicker view, int year,
                                          int monthOfYear, int dayOfMonth) {
                        // TODO Auto-generated method stub
                        myCalendar.set(Calendar.YEAR, year);
                        myCalendar.set(Calendar.MONTH, monthOfYear);
                        myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                        String myFormat = "yyyy-MM-dd"; //In which you need put here
                        SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

                     //   expiry.setText(sdf.format(myCalendar.getTime()));

                    }
                }, mYear, mMonth, mDay);
        dpd.getDatePicker().setMinDate(System.currentTimeMillis());
        dpd.show();

【讨论】:

  • 现在我的日历可以完美运行了。它显示当前日期.. 非常感谢
【解决方案2】:

试试这个:

Calendar c = Calendar.getInstance();

c.setTimeInMillis(System.currentTimeMillis());

【讨论】:

  • 是的,我已经在 onCreateView() 中编写了第一条语句,但是我在哪里包含第二条语句在我的 method() 中?谢谢
  • 就在第一条语句的下方。
【解决方案3】:

调用 DatePickerDialog 时需要将当前日期作为参数传递

 // Use the current date as the default date in the picker
    final Calendar c = Calendar.getInstance();
    int mYear = c.get(Calendar.YEAR);
    int mMonth = c.get(Calendar.MONTH);
    int mDay = c.get(Calendar.DAY_OF_MONTH);

根据您的代码,我看不到您将 mYearmMonthmDate 的值分配到哪里。

【讨论】:

    【解决方案4】:

    我希望这篇 sn-p 对你有用..

    String strThatDay = datePicker.getYear() + "/" + (datePicker.getMonth() + 1) + "/" + datePicker.getDayOfMonth();
                SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");
                Date choosenDate = null;
                try {
                    choosenDate = formatter.parse(strThatDay);//catch exception
                } catch (ParseException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
                final Calendar todayCal = Calendar.getInstance();
                todayCal.setTime(choosenDate);
    

    【讨论】:

      【解决方案5】:
      Calendar c = Calendar.getInstance();
      int mYear = c.get(Calendar.YEAR);
      int mMonth = c.get(Calendar.MONTH);
      int mDay = c.get(Calendar.DAY_OF_MONTH);
      
      DatePickerDialog dialog =
          new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay);
      dialog.show();
      

      您可以通过这种方式初始化您的选择器。 Check this on

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-27
        • 2016-12-01
        • 2016-03-27
        • 1970-01-01
        相关资源
        最近更新 更多