Java結(jié)合Kotlin實現(xiàn)寶寶年齡計算
更新時間:2022年06月27日 08:47:25 作者:as_pixar
這篇文章主要為大家介紹了Java結(jié)合Kotlin實現(xiàn)寶寶年齡計算示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
通過生日計算寶寶多大了
前段時間大家在打新冠狀疫苗的時候,護(hù)士給了我一張小紙條,上面清晰的顯示我在地球上的年齡26歲4個月零3天。我們也寫個代碼走起
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; public class LifeAge{ /** * @param birthday 日期格式y(tǒng)yyy-MM-dd * 根據(jù)用戶生日計算年齡 * 用Calender對象取得當(dāng)前日期對象--從對象中分別取出年月日 * 輸出結(jié)果 例如 26歲7月零9天 */ public static String getAgeByBirth(String birthday) { //從Calendar對象中或得一個Date對象 Calendar now = Calendar.getInstance(); /*把出生日期放入Calendar類型的bir對象中,進(jìn)行Calendar和Date類型進(jìn)行轉(zhuǎn)換*/ Calendar bir = Calendar.getInstance(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); try { bir.setTime(simpleDateFormat.parse(birthday)); } catch (ParseException e) { e.printStackTrace(); } //如果生日大于當(dāng)前日期,則拋出異常:出生日期不能大于當(dāng)前日期 if (now.before(birthday)) { throw new IllegalArgumentException("The birthday is before Now,It's unbelievable"); } //取出當(dāng)前年月日 int yearNow = now.get(Calendar.YEAR); int monthNow = now.get(Calendar.MONTH) + 1; int dayNow = now.get(Calendar.DAY_OF_MONTH); //取出出生年月日 int yearBirth = bir.get(Calendar.YEAR); int monthBirth = bir.get(Calendar.MONTH) + 1; int dayBirth = bir.get(Calendar.DAY_OF_MONTH); //先day相減,不夠向month借,然后month相減,不夠向year借,最后year相減。 int day = dayNow - dayBirth; int month = monthNow - monthBirth; //年齡是當(dāng)前年減去出生年 int year = yearNow - yearBirth; if (day < 0) { month -= 1; now.add(Calendar.MONTH, -1);//得到上一個月,用來得到上個月的天數(shù)。 //借一個月 day = day + now.getActualMaximum(Calendar.DAY_OF_MONTH); } if (month < 0) { //一年12個月,借12個月 month = (month + 12) % 12; //借了12個月,少一年 year--; } StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(year + "歲"); stringBuilder.append(month + "月"); if (day < 20) { stringBuilder.append("零" + day + "天"); } else { stringBuilder.append(day + "天"); } if (year == 0 && month == 0 && day == 0) { stringBuilder.delete(0, stringBuilder.length()); stringBuilder.append("今日出生"); } return stringBuilder.toString(); } /*main方法測試*/ public static void main(String[] args) { String birthday = "1993-10-18"; String age = getAgeByBirth(birthday); System.out.print("年齡=" + age); } }
輸出結(jié)果
26歲7月零9天
再來一個Kotlin版
import java.text.SimpleDateFormat import java.util.* class LifeAge { /** * @param birthday 日期格式y(tǒng)yyy-MM-dd * 根據(jù)用戶生日計算年齡 * 用Calender對象取得當(dāng)前日期對象--從對象中分別取出年月日 * 輸出結(jié)果 例如 26歲9個月零28天 */ fun getAgeByBirth(birthday: String?): String { //從Calendar對象中或得一個Date對象 val now = Calendar.getInstance() /*把出生日期放入Calendar類型的bir對象中,進(jìn)行Calendar和Date類型進(jìn)行轉(zhuǎn)換*/ val bir = Calendar.getInstance() val simpleDateFormat = SimpleDateFormat("yyyy-MM-dd") bir.time = simpleDateFormat.parse(birthday) //如果生日大于當(dāng)前日期,則拋出異常:出生日期不能大于當(dāng)前日期 require(!now.before(birthday)) { "The birthday is before Now,It's unbelievable" } //取出當(dāng)前年月日 val yearNow = now[Calendar.YEAR] val monthNow = now[Calendar.MONTH] + 1 val dayNow = now[Calendar.DAY_OF_MONTH] //取出出生年月日 val yearBirth = bir[Calendar.YEAR] val monthBirth = bir[Calendar.MONTH] + 1 val dayBirth = bir[Calendar.DAY_OF_MONTH] //先day相減,不夠向month借,然后month相減,不夠向year借,最后year相減。 var day = dayNow - dayBirth var month = monthNow - monthBirth //年齡是當(dāng)前年減去出生年 var year = yearNow - yearBirth if (day < 0) { month -= 1 now.add(Calendar.MONTH, -1) //得到上一個月,用來得到上個月的天數(shù)。 //借一個月 day += now.getActualMaximum(Calendar.DAY_OF_MONTH) } if (month < 0) { //一年12個月,借12個月 month = (month + 12) % 12 //借了12個月,少一年 year-- } val stringBuilder = StringBuilder() stringBuilder.append(year.toString() + "歲") stringBuilder.append(month.toString() + "月") if (day < 20) { stringBuilder.append("零" + day + "天") } else { stringBuilder.append(day.toString() + "天") } if (year == 0 && month == 0 && day == 0) { stringBuilder.delete(0, stringBuilder.length) stringBuilder.append("今日出生") } return stringBuilder.toString() } } /*main方法測試*/ fun main() { val birthday = "1994-10-18" val age = LifeAge().getAgeByBirth(birthday) print("年齡=$age") }
輸出結(jié)果
以上就是Java結(jié)合Kotlin實現(xiàn)寶寶年齡計算的詳細(xì)內(nèi)容,更多關(guān)于Java Kotlin年齡計算的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
springBoot項目集成quartz開發(fā)定時任務(wù)案例及注意事項
這篇文章主要介紹了springBoot項目集成quartz開發(fā)定時任務(wù)案例及注意事項,這些功能的主要接口(API)是Scheduler接口。它提供了簡單的操作,例如:將任務(wù)納入日程或者從日程中取消,開始/停止/暫停日程進(jìn)度,需要的朋友可以參考下2022-06-06SpringCloud之分布式配置中心Spring Cloud Config高可用配置實例代碼
這篇文章主要介紹了SpringCloud之分布式配置中心Spring Cloud Config高可用配置實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04idea的spring boot項目實現(xiàn)更改端口號操作
這篇文章主要介紹了idea的spring boot項目實現(xiàn)更改端口號操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-09-09