日历显示所选日期

时间:2019-02-21 11:19:46

标签: java android calendar

我知道这是一个重复的问题,但是我仍然无法解决。

显示当前日期的日历示例:19/2/19 用户选择:2019年1月20日

问题: 日历将显示当前日期,而不是用户选择的日期。 非常感谢。

已更新

enter image description here

我能够从日期选择器对话框中获取选定的日期并在textview中显示。 但现在我希望日历在textview中显示相同的日期,而不显示当前日期。

示例:用户选择的日期:21/1/2019,日历应显示日期:21/1/2019,而不是当前日期22/2/2019 谢谢:)

3 个答案:

答案 0 :(得分:1)

日历显示0到11个月。使用以下功能。

     private int mYear, mMonth, mDay;
     private String selectedDate;
     Calendar cal;

将此代码放在您的活动的OnCreate中

    cal = Calendar.getInstance();

    Date c = cal.getTime();
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
    selectedDate = df.format(c);

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

现在将其放在您的按钮上

    private void showDatePicker() {

// This will show you previously selected date.      
    cal.set(Calendar.MONTH, mMonth);
    cal.set(Calendar.DATE, mDay);
    cal.set(Calendar.YEAR, mYear);

        DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
                new DatePickerDialog.OnDateSetListener() {

                    @Override
                    public void onDateSet(DatePicker view, int year,
                                          int monthOfYear, int dayOfMonth) {

                    mMonth = monthOfYear;
                    mDay = dayOfMonth;
                    mYear = year;

                        //2018-08-15
                        selectedDate = year + "-" + ((monthOfYear + 1)) + "-" + (dayOfMonth);
                        tvDate.setText(selectedDate);
                   }
                }, mYear, mMonth, mDay);

      datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
        datePickerDialog.show();
    }

答案 1 :(得分:1)

全局声明:

Calendar c = Calendar.getInstance();

private void showDatePicker() {

   long timeInMillis = getmilifromdate(tvDate.getText().toString);
   c.setTimeInMillis(timeInMillis);

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

    DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(),
            new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {
                    //2018-08-15
                    selectedDate = year + "-" + ((monthOfYear + 1)) + "-" + (dayOfMonth);
    c.set(year, monthOfYear, dayOfMonth);
                    tvDate.setText(selectedDate);
               }
            }, mYear, mMonth, mDay);

    datePickerDialog.getDatePicker().setMaxDate(System.currentTimeMillis());
    datePickerDialog.show();
}

编辑

从时间获取时间毫秒

public long getmilifromdate(String datei) // 2015-11-21
    {
        Date date = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd);
            date = sdf.parse(datei);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return date == null ? System.currentTimeMillis() : date.getTime();
    }

答案 2 :(得分:0)

日历类在onDateSet回调中显示0到11个月。

请考虑以下文档

https://developer.android.com/reference/android/app/DatePickerDialog.OnDateSetListener

因此您必须将月份增加1。

我认为现在对您来说很清楚。