Android(最低API 15)下如何获取当前年份?Kotlin代码兼容求助
解决API Level 15下获取当前年份的问题
嘿,这个API兼容性的坑我之前也踩过!你代码里的问题其实出在常量名的拼写和对Calendar API的误解上——Calendar.Year(小写y)是API 24才引入的新常量,但我们完全可以用从API Level 1就支持的传统写法来获取当前年份。
修正后的兼容代码
直接替换你获取年份的部分,用Calendar.YEAR(全大写)就可以在API15环境下正常工作了,完整的方法代码如下:
public fun calculateAge(view: View) { val dob: String = etbirth.text.toString() // 初始化Calendar实例,获取当前时间 val calendar = Calendar.getInstance() // 使用API1+就支持的Calendar.YEAR常量获取当前年份 val currentYear = calendar.get(Calendar.YEAR) val age = currentYear - dob.toInt() tvage.text = "$age" }
额外的优化建议
- 输入合法性校验:当前代码直接把输入转成Int,如果用户输入的不是四位数字会崩溃,建议加个简单判断:
if (dob.length != 4 || !dob.all { it.isDigit() }) { tvage.text = "请输入有效的四位年份" return } - 更精准的年龄计算:当前代码只计算了年份差,如果用户的生日还没到当年的日期,年龄会多算1岁。如果需要更准确的计算,可以同时获取当前的月份和日期,和生日的月日对比后再调整年龄。
内容的提问来源于stack exchange,提问作者s.nainwal
相关产品推荐
相关产品推荐

