如何将datePickerDialogue设置为当前日期?

时间:2018-03-20 06:20:34

标签: java android datepickerdialog

我希望用户从date picker dialogue中选择日期并使用所选日期。 我做了一个日期选择对话,唯一的问题是当对话打开日期显示为1/1/1990,那么用户必须来到今年。我想用today's日期打开对话框。 以下是我的代码 -

  public class MyClass extends AppCompatActivity {

    Calendar cal;
    Button selectDate;
    DatePickerDialog datePicker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_trains_bw_stations);
         selectDate=findViewById(R.id.select_date);
        selectDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cal=Calendar.getInstance();
                int day=cal.get(Calendar.DAY_OF_MONTH);
                int month=cal.get(Calendar.MONTH);
                int year=cal.get(Calendar.YEAR);

                datePicker=new DatePickerDialog(TrainsBwStations.this, new DatePickerDialog.OnDateSetListener() {
                    @Override
                    public void onDateSet(DatePicker view, int mYear, int mMonth, int mDayOfMonth) {
                        Log.d("Rail","Year-"+mYear);
                        Log.d("Rail","Month-"+mMonth);
                        Log.d("Rail","Day-"+mDayOfMonth);
                    }
                },day,month,year);
                datePicker.show();
            }
        });
    }
}

5 个答案:

答案 0 :(得分:1)

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(Class.this, Class.this, 
                                               mYear, mMonth, mDay);
dialog.show();

答案 1 :(得分:0)

试试这个:

Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);     

// set current date into datepicker
datePicker.init(year, month, day, null);

答案 2 :(得分:0)

请使用此

Calendar c = Calendar.getInstance();
SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");
String date = df.format(c.getTime());
datePickerDialog.updateDate(Integer.parseInt(date.split("/")[2]),Integer.parseInt(date.split("/")[1]),Integer.parseInt(date.split("/")[0]));
datePickerDialog.setTitle("");
datePickerDialog.show();

答案 3 :(得分:0)

尝试以下代码

  public class MyClass extends AppCompatActivity {

    Calendar cal;
    Button selectDate;
    DatePickerDialog datePicker;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_trains_bw_stations);
        selectDate=findViewById(R.id.select_date);
        selectDate.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                cal = Calendar.getInstance();

                final DatePickerDialog.OnDateSetListener dateA = new DatePickerDialog.OnDateSetListener() {

                @Override
                public void onDateSet(DatePicker view, int year, int monthOfYear,
                    int dayOfMonth) {
                // TODO Auto-generated method stub
                       cal.set(Calendar.YEAR, year);
                       cal.set(Calendar.MONTH, monthOfYear);
                       cal.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                }
            };

        new DatePickerDialog(MyClass.this, dateA, cal.get(Calendar.YEAR),
                cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH)).show();
            }
        });
    }
}

答案 4 :(得分:0)

以后您可以根据需要转换为字符串格式的日期

//Defining it in Class Activity before onCreate.. or you can define in onCreate..
private Calendar calendar;
private int year, month, day;
String formattedDate, toDate, fromDate, pickUpdate;

   //Inside onCreate...
    calendar = Calendar.getInstance();
    year = calendar.get(Calendar.YEAR);
    month = calendar.get(Calendar.MONTH);
    day = calendar.get(Calendar.DAY_OF_MONTH);

 //on button click or any view click.. paste the below code..
 toTV = (TextView) findViewById(R.id.toTV);
    toTV.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //have a look at **to** after YourActivity.this
            DatePickerDialog datePickerDialog = new DatePickerDialog(YourActivity.this, to, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));
            //This is used to set the date to select current and future date not the past dates..uncomment if you want to use it...
            //datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis());
            datePickerDialog.show();

        }
    });

//outside oncreate which is a calender pop-up...
//Here **to** is object which called in onClick of dateBT
DatePickerDialog.OnDateSetListener to = new DatePickerDialog.OnDateSetListener() {
    @Override
    public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
        String day = dayOfMonth + "";
        if (dayOfMonth < 9) {
            day = "0" + dayOfMonth;
        }
        String monthString = (String.valueOf(month + 1));
        if (month < 9) {
            monthString = "0" + monthString;
        }
        formattedDate = String.valueOf(year) + "/" + monthString
                + "/" + day;

        dateTV.setText(formattedDate);
        date = formattedDate;
    }
};