【发布时间】:2020-01-03 10:53:16
【问题描述】:
我有以下代码可以更新我的日历对象。
val date = DatePickerDialog.OnDateSetListener { _, year, monthOfYear, dayOfMonth ->
myCalendar.set(year, monthOfYear, dayOfMonth)
myCalendar.set(Calendar.HOUR, myCalendar.get(Calendar.HOUR))
myCalendar.set(Calendar.MINUTE, myCalendar.get(Calendar.MINUTE))
myCalendar.set(Calendar.SECOND, myCalendar.get(Calendar.SECOND))
updateDate()
}
我收到以下值:
year = 2019
month = 11
day = 31
但是当我执行以下代码时,我得到 year = 2020:
private fun updateDate()
{
val myFormat = "dd/MM/YYYY HH:mm:ss"
val sdf = SimpleDateFormat(myFormat, Locale.getDefault())
date_et.setText(sdf.format(myCalendar.time))
}
myCalendar.time 给了我以下字符串:Tue Dec 31 11:47:00 GMT+01:00 2019
但在date_et 上出现以下一个:31/12/2020 11:47:00
为什么我的日历上有 2019 年,而我的视图中却出现了 2020 年?
【问题讨论】:
-
val myFormat = "dd/MM/yyyy HH:mm:ss" - 将 Y 替换为 "y"
-
@Nik 和 yyyy 它正在工作。为什么?
-
@Lechucico @"YYYY" 是基于周的日历年。 @"yyyy" 是普通日历年。
-
顺便考虑扔掉长期过时且臭名昭著的麻烦
SimpleDateFormat和朋友,并将ThreeTenABP添加到您的Android项目中,以便使用java.time,现代Java日期和时间API .使用起来感觉好多了。 -
(A) 在发布之前,请务必彻底搜索 Stack Overflow。 (B) 你真的应该继续学习java.time类。
标签: java android date calendar formatter