为了账号安全,请及时绑定邮箱和手机立即绑定

如何启用日期中日和月中 0 的自动删除

如何启用日期中日和月中 0 的自动删除

哈士奇WWW 2022-09-28 16:20:54
我想在没有Joda Time的寄存器形式中创建一个年龄计算器,但是我在连接int时遇到了问题。它从日期组件(通过示例 04)和月份组件中删除 0,因此它完全错误地计算了年龄。我试图把它放在第一个,然后放入一个,但这不起作用。Stringintprivate void setAge(View view) {    Calendar calendarB = Calendar.getInstance();    int years = calendarB.get(Calendar.YEAR);    int month = calendarB.get(Calendar.MONTH);    int day = calendarB.get(Calendar.DAY_OF_MONTH);    //int    currentDate = Integer.valueOf(String.valueOf(years) + String.valueOf(month + 1) + String.valueOf(day));    Calendar calendar = Calendar.getInstance();    datePickerDialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {        @Override        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {            //int            birthDate = Integer.valueOf(String.valueOf(year) + String.valueOf(monthOfYear + 1) + String.valueOf(dayOfMonth));            ageI = (currentDate - birthDate) / 10000;            String age = Integer.toString(ageI);            birth.setText(age);            datePickerDialog.dismiss();        }    }, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));}
查看完整描述

2 回答

?
暮色呼如

TA贡献1853条经验 获得超9个赞

好吧,像这样用整数来计算年龄并不是这样做的方法。

首先,现在使用该类是错误的。您应该使用新的 Java 日期和时间 API(在包中)。该类的方法似乎计算了这两年之间的差异:Calendarjava.timebetweenPeriod

Period.between(birthDate, currentDate);

然后,您可以致电以获取年份。它利用了这样一个事实,即当我们人类说出我们的年龄时,我们根本不会将价值四舍五入。例如,如果我明天30岁,我今天仍然29岁。getYears

这应该有效:

final LocalDate now = LocalDate.now();

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


    @Override

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

        LocalDate birthDate = LocalDate.of(year, monthOfYear, dayOfMonth);

        int age = Period.between(birthDate, now).getYears();

        birth.setText(String.valueOf(age));


        datePickerDialog.dismiss();

    }

}, now.getYear(), now.getMonthValue(), now.getDayOfMonth());


查看完整回答
反对 回复 2022-09-28
?
翻阅古今

TA贡献1780条经验 获得超5个赞

Integer始终从值中删除 0 前面的值。使用此方法/函数转换为前面的 0。IntString


 // ADDS 0  e.g - 02 instead of 2

    public String checkDigit (int number) {

        return number <= 9 ? "0" + number : String.valueOf(number);

    }

编辑


在您的情况下,只需使用这些行


private void setAge(View view) {


Calendar calendarB = Calendar.getInstance();

int years = calendarB.get(Calendar.YEAR);

int month = calendarB.get(Calendar.MONTH);

int day = calendarB.get(Calendar.DAY_OF_MONTH);

//int

currentDate = Integer.valueOf(String.valueOf(years) + String.valueOf(month + 1) + String.valueOf(day));


Calendar calendar = Calendar.getInstance();

Calendar dob = Calendar.getInstance();


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

    @Override

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

        //int

        birthDate = Integer.valueOf(String.valueOf(year) + String.valueOf(monthOfYear + 1) + String.valueOf(dayOfMonth));


        // New code

        dob.set(year, month, day); 

        int age = calendar.get(Calendar.YEAR) - dob.get(Calendar.YEAR);


        if (calendar.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR)){

            age--; 

        }


        String age = checkDigit(age);

        birth.setText(age);


        datePickerDialog.dismiss();

    }

}, calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH));

}


查看完整回答
反对 回复 2022-09-28
  • 2 回答
  • 0 关注
  • 69 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号