【发布时间】:2020-09-09 18:45:06
【问题描述】:
我想生成一个 Kotlin 样式的日期对象数组,从当前日期开始每 5 天递减一次以编程方式:
{现在、5_days_ago、10_days_ago 等..}
private fun dateArray() : ArrayList<Date> {
val date = Date()
val date2 = Date(date.time - 432000000)
val date3 = Date(date2.time - 432000000)
val date4 = Date(date3.time - 432000000)
val date5 = Date(date4.time - 432000000)
val date6 = Date(date5.time - 432000000)
val date7 = Date(date6.time - 432000000)
val date8 = Date(date7.time - 432000000)
val date9 = Date(date8.time - 432000000)
val dateA = Date(date9.time - 432000000)
return arrayListOf(date, date2, date3, date4, date5, date6, date7, date8, date9, dateA)
}
这种方式开销很大。我敢打赌 Kotlin 提供了一种优雅的方式?
【问题讨论】:
-
您如何验证没有生成数组?调用构造函数绝对实例化一个对象。
-
他说了什么!乍一看,该代码看起来是正确的。虽然我会检查您是否应该使用 DAY_OF_MONTH 而不是 DAY_OF_YEAR。此外,通常建议使用较新的 java.time 类——LocalDate、Instant 和 c——而不是旧的笨重的 java.util 类,例如 Date 和 Calendar。
-
@gidds 但是 09.09 , 04.09 , 30.08 , 25.08 , 20.08 , 15.08 , .... DAY_OF_MONTH 可以从 9 月到 8 月溢出吗?
-
@pavel 查看 Calendar.add() 的文档;它会在不同单位之间“进行”正确的日期计算。 (与 Calendar.roll() 方法不同,后者没有。)
-
我建议你不要使用
Date(也不要使用Calendar)。这些课程设计不良且早已过时。而是使用来自java.time, the modern Java date and time API 的LocalDate。
标签: java arrays list date kotlin