Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java getAge()函数不准确_Java_Kotlin - Fatal编程技术网

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
。交换日期和月份修复了它,谢谢!