Java getAge()函数不准确
我的Java getAge()函数不准确,java,kotlin,Java,Kotlin,我的getAge()函数在我传入11/18/1955时有缺陷,我的age函数在返回65时返回63: fun getAge(birthday: String?): Int { if (birthday == null || birthday.isEmpty()) return 0 val day = birthday.substring(0, 2).toInt() val month = birthday.substring(3, 5).toInt() val ye
getAge()
函数在我传入11/18/1955
时有缺陷,我的age函数在返回65时返回63:
fun getAge(birthday: String?): Int {
if (birthday == null || birthday.isEmpty()) return 0
val day = birthday.substring(0, 2).toInt()
val month = birthday.substring(3, 5).toInt()
val year = birthday.substring(6, 10).toInt()
val dob = Calendar.getInstance()
val today = Calendar.getInstance()
dob.set(year, month, day)
var age = today.get(Calendar.YEAR) - dob.get(Calendar.YEAR)
if ( today.get(Calendar.DAY_OF_YEAR) < dob.get(Calendar.DAY_OF_YEAR) ) age--
return age
}`
fun getAge(生日:String?):Int{
如果(birthday==null | | birthday.isEmpty())返回0
val day=birthday.substring(0,2).toInt()
val month=birth.substring(3,5).toInt()
val year=birth.substring(6,10).toInt()
val dob=Calendar.getInstance()
val today=Calendar.getInstance()
日期设置(年、月、日)
var age=today.get(日历年)-dob.get(日历年)
如果(今天得到(日历年的第二天)
知道问题出在哪里吗?您能使用Java 8的LocalDate吗?然后我会这样做:
fun getAge(birthdayString: String?): Int {
if (birthdayString == null || birthdayString.isEmpty()) return 0
val day = birthdayString.substring(0, 2).toInt()
val month = birthdayString.substring(3, 5).toInt()
val year = birthdayString.substring(6, 10).toInt()
val birthday = LocalDate.of(year, month, day)
val today = LocalDate.now()
val age = java.time.temporal.ChronoUnit.YEARS.between(today, birthday).toInt()
return age
}
18号是几月<代码>1955年11月18日。您应该验证输入,或者预期的格式实际上是MM/dd/yyyy您是对的,Facebook使用的格式是
MM/dd/yyyy
。交换日期和月份修复了它,谢谢!