通過日期選擇器輸入時間並判斷年齡(週歲)
阿新 • • 發佈:2018-12-18
今天的我特別的高產,已經寫了三篇文章了,主要就是乘著空閒把最近遇到的問題都記錄下來
老規矩,先上圖
如果年齡小於0,則提示錯誤
xml檔案就不貼了,很簡單
實現這個功能主要用兩個方法,一個是寫一個計算週歲的方法,一開始把週歲想簡單了,居然直接減年份去了,太愚鈍了,,,
還有一個就是日期選擇器
先看程式碼吧
//日期選擇 private void dialogDate() { tv_birthday_set.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new DatePickerDialog(IndividualActivity.this, new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthofYear, int dayOfMonth) { //顯示生日(月份要+1,因為這個方法是從0開始算的) tv_birthday_set.setText(String.format("%d-%d-%d", year, monthofYear + 1, dayOfMonth)); Calendar cal = Calendar.getInstance(); String strDate = year + "-" + monthofYear + "-" + dayOfMonth; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); Date birthDay = null; try { birthDay = sdf.parse(strDate); } catch (ParseException e) { e.printStackTrace(); } int birth = countAge(birthDay); if (birth<0) { Toast.makeText(getApplicationContext(), "生日輸入有誤", Toast.LENGTH_SHORT).show(); tv_age_set.setText(""); } else { tv_age_set.setText(birth + "歲"); } } //設定初始的顯示日期 }, 2000, 0, 1).show(); } }); }
這個是比較簡單的日期選擇器,當點選生日的TextView的時候設定監聽,呼叫日期選擇器,將日期顯示在TextView上,然後再呼叫週歲計算方法,通過獲取選擇的日期計算週歲並返回給年齡的TextView
下面看一下週歲計算方法
//根據生日計算年齡 private int countAge(Date birthDay) { Calendar cal = Calendar.getInstance(); if (cal.before(birthDay)) { throw new IllegalArgumentException( "The birthDay is before Now.It's unbelievable!"); } //獲得當前日期 int yearNow = cal.get(Calendar.YEAR); int monthNow = cal.get(Calendar.MONTH); int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //獲得出生日期 cal.setTime(birthDay); int yearBirth = cal.get(Calendar.YEAR); int monthBirth = cal.get(Calendar.MONTH) + 1; int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH); int age = yearNow - yearBirth; if (monthNow <= monthBirth) { if (monthNow == monthBirth) { if (dayOfMonthNow < dayOfMonthBirth) age--; } else { age--; } } return age; }
然後直接呼叫一下dialogDate()的方法就行了
因為程式碼是擷取的片段,所以方法的呼叫可能和我的原始碼有點差別,如果有問題可以告訴我。