由于Java纪元是1970年,因此Date
对象中表示的任何时间都将无法正常工作。这意味着您的日期将从1970年开始,当两个Date
对象相加时,总和会差大约1970年。因此,我们改用Calendar
。
示例:两个日期相加
import java.util.Calendar
fun main(args: Array<String>) {
val c1 = Calendar.getInstance()
val c2 = Calendar.getInstance()
val cTotal = c1.clone() as Calendar
cTotal.add(Calendar.YEAR, c2.get(Calendar.YEAR))
cTotal.add(Calendar.MONTH, c2.get(Calendar.MONTH) + 1) // Zero-based months
cTotal.add(Calendar.DATE, c2.get(Calendar.DATE))
cTotal.add(Calendar.HOUR_OF_DAY, c2.get(Calendar.HOUR_OF_DAY))
cTotal.add(Calendar.MINUTE, c2.get(Calendar.MINUTE))
cTotal.add(Calendar.SECOND, c2.get(Calendar.SECOND))
cTotal.add(Calendar.MILLISECOND, c2.get(Calendar.MILLISECOND))
println("${c1.time} + ${c2.time} = ${cTotal.time}")
}
运行程序后,输出将是
Tue Aug 08 10:20:56 NPT 2017 + Tue Aug 08 10:20:56 NPT 2017 = Mon Apr 16 20:41:53 NPT 4035
在上一个程序中,c1和c2存储了当前日期。然后,我们仅克隆c1并将c2的每个日期/时间属性逐一添加。
如您所见,我们将月份加了1。这是因为Kotlin中的月份是从0开始的。
另外,您也可以在Kotlin中使用Joda进行日期/时间操作。
这是等效的Java代码:Java程序:两个日期相加。