我正在尝试查找所选 date
和今天的 date
的差异是否等于或大于 18 年。
获取今天的日期是我的代码
private val simpleDateFormat = SimpleDateFormat("dd-MM-yyyy", Locale.getDefault())
private val date = Date()
private val todayDate = simpleDateFormat.parse(simpleDateFormat.format(date)).time
private val cal = Calendar.getInstance()
cal.time = date
val date = simpleDateFormat.parse("12-11-2001").time
val years = (todayDate - date) / (1000L * 60 * 60 * 24 * cal.getActualMaximum(Calendar.DAY_OF_YEAR))
现在我选择的日期是 12-11-2001 而今天的日期是 11-11-2019 所以它应该显示 17 年但它显示 18 年。即使我选择 13,14 或 15th November 2001,它显示的是 18 年而不是 17 年,但如果我选择 16th Novemeber 2001,它会显示 17 年。我无法理解为什么会发生这种行为。
最佳答案
最好使用 java.time
API 来完成这类任务:
import java.time.*
import java.time.format.*
import java.time.temporal.ChronoUnit
fun main() {
val today = LocalDate.now()
val date = LocalDate.parse("12-11-2001", DateTimeFormatter.ofPattern("dd-MM-yyyy"))
val diff = ChronoUnit.YEARS.between(date, today)
println("Diff between $date and $today is $diff years")
}
如果由于 minSdkVersion 限制你还不能使用 java.time
,你可以使用 ThreeTen Backport项目及其Android适配ThreeTenABP .
关于android - 两个日期之间的差异无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58796360/