现在显示日期如下:
{{1}}
做起来容易吗?
答案 0 :(得分:1)
这很多事情都不容易。简化的两个建议:
hash.values.last
和Calendar
替换为一个新类Date
。因此,它为我们节省了转换。另外,您使用的类已经过时了,通常使用java.time会更好。下面的代码未经测试,可能有一两个错字,但是您应该明白这一点。
LocalDate
插入您要放置非洲/阿比让的所需时区。使用 val date = LocalDate.now(ZoneId.of("Africa/Abidjan"))
val currentYear = date.year
val currentMonth = date.monthValue
val currentDay = date.dayOfMonth
val dateFormatter = DateTimeFormatter.ofLocalizedDate(TextStyle.MEDIUM)
pickDate.setOnClickListener {
val datePickDialog = DatePickerDialog(
activity,
DatePickerDialog.OnDateSetListener { view, year, month, dayOfMonth ->
val selectedDate = LocalDate.of(year, month + 1, dayOfMonth)
val dateString = selectedDate.format(dateFormatter)
currentDateView.text = dateString
},
currentYear,
currentMonth - 1,
currentDay
)
datePickDialog.show()
}
作为默认时区(这是您问题中使用的代码)。我还从事件监听器中取出了格式化程序。无需每次都构造一个新的格式化程序。
是的,java.time在较新和较旧的Android设备上均可正常运行。它只需要至少 Java 6 。
ZoneId.systemDefault
导入日期和时间类。org.threeten.bp
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。