【问题标题】:How to start DatePickerDialog on the Current date?如何在当前日期启动 DatePickerDialog?
【发布时间】:2020-02-29 11:52:18
【问题描述】:

我有一种方法可以使用这样的日历返回当前日期:

    Calendar calendar = Calendar.getInstance();
    dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
    dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);
    month = calendar.get(Calendar.MONTH);
    year = calendar.get(Calendar.YEAR);

另一方面,我有一个 DatePickerDialog 我需要更新以前的值。

private void launchDatePicker() {
    final Calendar calendar = Calendar.getInstance();
    int nuevoDia = calendar.get(Calendar.DAY_OF_MONTH);
    int nuevoDiaSemana = calendar.get(Calendar.DAY_OF_WEEK);
    int nuevoMes = calendar.get(Calendar.MONTH);
    int nuevoAño = calendar.get(Calendar.YEAR);

    DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int nuevoAño, int nuevoMes, int nuevoDia) {
            //int nuevoDiaSemana = calendar.get(Calendar.DAY_OF_WEEK);
            dayOfMonth = nuevoDia;
            month = nuevoMes;
            year = nuevoAño;
            fechaActual(dayOfWeek, dayOfMonth,month);
            ajustarFormatoFecha();
            readFromDichos();
            faseLunar();


        }
    }
    ,nuevoDia,nuevoMes,nuevoAño);
    datePickerDialog.show();
}

问题是这个 DatePicker 总是从 year = 1900 开始。我怎样才能在当前日期开始呢?

如何使用 DatePickerDialog 获得 DayOfTheWeek

【问题讨论】:

    标签: android datepicker


    【解决方案1】:

    您将错误的参数传递给DatePickerDialog

    nuevoDia,nuevoMes,nuevoAño

    应该是:nuevoAño, nuevoMes, nuevoDia

    你可以这样做:

    private void launchDatePicker() {
        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 datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int nuevoAño, int nuevoMes, int nuevoDia) {
                //int nuevoDiaSemana = calendar.get(Calendar.DAY_OF_WEEK);
                dayOfMonth = nuevoDia;
                month = nuevoMes;
                year = nuevoAño;
                fechaActual(dayOfWeek, dayOfMonth,month);
                ajustarFormatoFecha();
                readFromDichos();
                faseLunar();
    
    
            }
        }
        , nuevoAño, nuevoMes, nuevoDia); // <----- correct arguments ------
        datePickerDialog.show();
    }
    

    【讨论】:

    • 感谢瓦卡尔。我会尽力。顺便说一句,你知道如何从 datePicker 获取 DAYOFWEEK 吗?
    • @Toni 我希望你看起来像这样,我希望它可以工作,否则让我知道:) stackoverflow.com/a/13966902/1868841
    • 感谢 Waqar,但即使它似乎已被弃用,它也会以我的 Android 系统的语言返回一个日期名称字符串,这对我没有用,因为我需要 1 到 7 之间的 int 所以我可以用任何语言确定。
    【解决方案2】:

    仅供参考:

    private void launchDatePicker() {
        final Calendar calendar = Calendar.getInstance();
        int nuevoDia = calendar.get(Calendar.DAY_OF_MONTH);
        int nuevoMes = calendar.get(Calendar.MONTH);
        int nuevoAño = calendar.get(Calendar.YEAR);
    
        DatePickerDialog datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int nuevoAño, int nuevoMes, int nuevoDia) {
                //int nuevoDiaSemana = calendar.get(Calendar.DAY_OF_WEEK);
                dayOfMonth = nuevoDia;
                month = nuevoMes;
                year = nuevoAño;
                Calendar c = calendar.getInstance();
                c.set(year,month,dayOfMonth);
                int nuevoDiaSemana = c.get(Calendar.DAY_OF_WEEK);
                dayOfWeek = nuevoDiaSemana;
                fechaActual(dayOfWeek, dayOfMonth,month);
                ajustarFormatoFecha();
                readFromDichos();
                faseLunar();
            }
        }
        ,nuevoAño,nuevoMes,nuevoDia);
        datePickerDialog.show();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2013-07-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多