You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将DatePickerDialog默认设置为显示当前日期?

解决DatePickerDialog默认显示今日日期的问题

嗨,这个问题很常见,核心就是你没有给Calendar对象初始化当前日期,所以DatePickerDialog才会默认跳到最早的起始日期1990-01-01。咱们改几行代码就能轻松搞定:

步骤1:正确初始化Calendar获取当前日期

在你的onCreate方法里,把cal的初始化改成获取系统当前日期的实例:

cal = Calendar.getInstance(); // 这行代码会自动获取当前的年、月、日

步骤2:获取当前日期参数并传给DatePickerDialog

接着从初始化好的cal里取出当前的年、月、日数值,创建DatePickerDialog时把这些值作为默认日期参数传入:

selectDate.setOnClickListener(v -> {
    int currentYear = cal.get(Calendar.YEAR);
    int currentMonth = cal.get(Calendar.MONTH);
    int currentDay = cal.get(Calendar.DAY_OF_MONTH);

    // 创建对话框时传入当前日期作为默认显示值
    datePicker = new DatePickerDialog(MyClass.this,
            (view, year, monthOfYear, dayOfMonth) -> {
                // 这里处理用户选择后的日期逻辑,比如把选中的日期显示在按钮上
                selectDate.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);
                // 别忘了更新cal对象的日期,方便后续业务使用
                cal.set(year, monthOfYear, dayOfMonth);
            }, currentYear, currentMonth, currentDay);
    datePicker.show();
});

完整修改后的代码片段

把这些逻辑整合到你的MyClass中,最终代码大概是这样:

public class MyClass extends AppCompatActivity { 
    Calendar cal; 
    Button selectDate; 
    DatePickerDialog datePicker; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.your_layout_id); // 替换成你的布局文件ID

        // 初始化Calendar为当前日期
        cal = Calendar.getInstance();
        selectDate = findViewById(R.id.your_select_date_button_id); // 替换成你的按钮ID

        selectDate.setOnClickListener(v -> {
            int currentYear = cal.get(Calendar.YEAR);
            int currentMonth = cal.get(Calendar.MONTH);
            int currentDay = cal.get(Calendar.DAY_OF_MONTH);

            datePicker = new DatePickerDialog(MyClass.this,
                    (view, year, monthOfYear, dayOfMonth) -> {
                        // 格式化并显示选中的日期
                        selectDate.setText(String.format("%d/%d/%d", dayOfMonth, monthOfYear + 1, year));
                        // 更新Calendar对象
                        cal.set(year, monthOfYear, dayOfMonth);
                    }, currentYear, currentMonth, currentDay);
            datePicker.show();
        });
    }
}

这样修改后,打开DatePickerDialog就会直接显示今天的日期,用户再也不用手动切换年份啦~

内容的提问来源于stack exchange,提问作者Naman Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:53:10