android - 与解析功能斗争
问题描述
于是开始学习 Kotlin 和 Android studio 编码。
我正在关注 Youtube 视频 https://www.youtube.com/watch?v=z3_QgdmXGK4&t=994s&ab_channel=Dr.ParagShukla
我正在制作简单的年龄计算器,但是不能让字符串变成日期,所以我可以用当前日期减去输入日期。代码看起来与视频中的完全相同。
代码编译良好并安装在 android 设备中,但是,每当按下计算年龄按钮时,应用程序都会因为 var dob = sdf.parse(dob) 函数而停止响应。我假设它无法将日期从字符串转换为日期格式以进行进一步计算。谢谢。
下面的代码:
fun openDatePicker(view: View) {
var c = Calendar.getInstance()
DatePickerDialog(
this,
DatePickerDialog.OnDateSetListener { datePicker, yy, mm, dd -> // listens what date picker has to say
var mm = mm + 1
var date = "$dd/ $mm /$yy "
TimePickerDialog(
this,
TimePickerDialog.OnTimeSetListener { timePicker, hh, mi ->
date += " $hh:$mi"
editTextTextPersonName.setText(date) // shows date in the line
},
c.get(Calendar.HOUR_OF_DAY),
c.get(Calendar.MINUTE),
true
).show()
}, c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DAY_OF_MONTH)
).show()
}
fun Calculateage(view: View) {
var today = Date() // todays date
var dobs = editTextTextPersonName.text.toString() // takes value from input
var sdf = SimpleDateFormat("mm/MM/yy HH:mm")
var dob = sdf.parse(dobs) // converts the date to simple date, no can find difference
var days = (today.time - dob.time) / 86400000 // converts into mil secs, need to divide by milsecs in a day
var hours = (today.time - dob.time) % 86400000 / 3600000
var minutes = (today.time - dob.time) % 86400000 % 3600000 / 60000
var sec = (today.time - dob.time) % 86400000 % 3600000 % 60000/1000
textView.visibility = View.VISIBLE
textView.setText("Days = $days\nHours= $hours\nMinutes=$minutes\nSeconds = $sec")
}
解决方案
您SimpleDateFormat
的字符串值不匹配。
你的var date
样子var date = "$dd/ $mm /$yy $hh:$mi"
您的 SimpleDateFormat 有"mm/MM/yy HH:mm"
您应该将格式化程序更改为以下内容:
"dd/ MM /yy HH:mm"
推荐阅读
- codeigniter - 无法在 CodeIgniter 中获取 URL 参数
- node.js - Nestjs 启动时出现 AXIOS_INSTANCE_TOKEN 错误
- c++ - 将十进制转换为二进制结果
- windows - 将多个文件从单个源复制到不同的目标,(递归)
- webpack - Webpack 5 和 mini-css-extract-plugin 失败并显示“TypeError: wellKnownSymbol is not a function”
- django - /search/处的Django AssertionError
- reactjs - NextJS 减少共享 JS 的首次加载
- python - 为什么 f-string 文字在这里不起作用,而 %()s 格式可以?
- javascript - 使用另一个 JSON 从 JSON 中检索数据
- javascript - 过滤搜索栏中的项目 Vue Composition API