亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何啟用日期中日和月中 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 關注
  • 94 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號