【问题标题】:How to calculate age based on picked date in DatePickerDialog android?如何根据 DatePickerDialog android 中的选择日期计算年龄?
【发布时间】:2015-11-10 22:37:45
【问题描述】:

我怎么能这样做?

这是我的代码:

private void setDateTimeField () {
    Calendar newCalendar = Calendar.getInstance();
    mDatePickerDialog = new DatePickerDialog(AddBirthday.this, new OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Calendar newDate = Calendar.getInstance();
            newDate.set(year, monthOfYear, dayOfMonth);
            addBirthdayDate.setText(dateFormatter.format(newDate.getTime()));
            dateSelected = String.valueOf(dayOfMonth) + " /" + String.valueOf(monthOfYear + 1)
                    + " /" + String.valueOf(year);
        }
    }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
}

我现在想计算用户在 DatePickerDialog 中选择日期并将其存储为整数类型时的生日。

【问题讨论】:

    标签: java android


    【解决方案1】:

    您可以尝试使用更简单的代码,例如:

        private int mDay;
        private int mMonth;
        private int mYear;
        private EditText date;
        private Calendar c = new Calendar();
    
        ...
    
        //and in your onCreate method:
        date = (EditText)findViewById(R.id.date_of_birth_as_text);
    
        date.setOnClickListener(new OnClickListener() {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                 showDialog(DATE_DIALOG_ID); //DATE_DIALOG_ID is the id of your DatePickerDialog - declared in your layout file
    
            }
        });
    
        //default values of the year, month and date - will be changed after click on the EditText view
        mYear = c.get(Calendar.YEAR);
        mMonth = c.get(Calendar.MONTH);
        mDay = c.get(Calendar.DAY_OF_MONTH);
    
        updateDisplay();
    
        protected Dialog onCreateDialog(int id) {
            switch(id) {
                case DATE_DIALOG_ID:
                return new DatePickerDialog(this, mDateSetListener, mYear, mMonth, mDay); 
            }
            return null;
         }
    
        private DatePickerDialog.OnDateSetListener mDateSetListener= new DatePickerDialog.OnDateSetListener() {
    
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,
                int dayOfMonth) {
                // TODO Auto-generated method stub
                c.set(Calendar.YEAR, year);
                c.set(Calendar.MONTH, monthOfYear);
                c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                mYear = c.get(Calendar.YEAR);
                mMonth = c.get(Calendar.MONTH);
                mDay = c.get(Calendar.DAY_OF_MONTH);
    
                updateDisplay();
            }
        };
    
    private void updateDisplay() {
        Date currentDate = new Date();
        int age = currentDate.getYear() - mYear;
        date.setText( new StringBuilder().append("The user is ")
                .append(age).append(" years old"));
    }
    

    【讨论】:

    • 感谢您的回复,但我需要根据他在 DatePickerDialog 中选择的日期计算人员年龄。例如,如果他选择 1992 年,我需要将其计算为 23 年并将其存储为整数类型。
    • 看看我的帖子的编辑然后:) 你可以像这样计算和打印它Date currentDate = new Date(); int age = currentDate.getYear() - mYear;
    • * 你也可以像这样得到当前年份 Calendar.get(Calendar.YEAR) - 1900
    • getYear() 方法已弃用。
    • 这就是我写你可以使用Calendar.get(Calendar.YEAR) - 1900的原因
    【解决方案2】:

    int age = getCurrentYear() -datePicker.getYear() ;

    【讨论】:

    • 这将在几周后出现问题。最好不要对当前年份进行硬编码。最好编辑您的答案并获取当前年份。
    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 1970-01-01
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-04
    • 2016-01-28
    • 1970-01-01
    相关资源
    最近更新 更多