我的Android应用中有一个带有许多日期的recyclerview。为了对数据进行排序&在按月+年分组的项目之间插入分隔符,我使用以下语言:
private fun monthFromDate(date: Date): Int {
val calendar = Calendar.getInstance()
calendar.time = date
return calendar.get(Calendar.MONTH)
}
private fun yearFromDate(date: Date): Int {
val calendar = Calendar.getInstance()
calendar.time = date
return calendar.get(Calendar.YEAR)
}
我认为它的坏主意总是调用Calendar.getInstance()。我也不想引入一个局部变量。 (顺便说一句,像date.month date.year这样的所有方法已弃用)
问题: 我有两个util.java.Date实例。如果月和月都让他们平等一年是平等的。如何在快速和快速中实现这种乐趣?最佳方式?
答案 0 :(得分:2)
Date.getMonth()
虽然弃用很好。 Java保持向后兼容性。
如果使用Java 8,您可以对您的版本Calendar.getInstance().get(Calendar.MONTH)
与新LocalDate.ofEpochDay(new Date().getTime()).getMonthValue()
答案 1 :(得分:1)
目前还不是很清楚,为什么Calendar.getInstance()是次优的。但是,根据您的要求,如何编码如下:
private fun getYearMonth(date: Date): Int {
val calendar = Calendar.getInstance()
calendar.time = date
return calendar.get(Calendar.YEAR) * 100 + calendar.get(Calendar.MONTH)
}
允许您在单个整数中访问yearMonth,例如201711