Groovy的TimeCategory与LocalDate和LocalDateTime

Pie*_*rre 5 groovy java-8

是否有关于如何在java8 LocalDate和LocalDateTime中使用TimeCategory(或等效)的示例或参考?我发现的所有代码片段都引用了我试图避免的java.util.Date.

tim*_*tes 5

Java 8 LocalDate 操作非常简单:

LocalDate.now().plusDays(2)
Run Code Online (Sandbox Code Playgroud)

我不确定 TimeCategory 会给你带来什么?


您可以非常简单地将其破解为 LocalDate 和 LocalDatTime 的元类:

import groovy.time.*
import java.time.*

LocalDate.metaClass {
    plus { Duration d ->
        delegate.plusYears(d.years)
                .plusMonths(d.months)
                .plusDays(d.days)
    }
}

LocalDateTime.metaClass {
    plus { Duration d ->
        delegate.plusYears(d.years)
                .plusMonths(d.months)
                .plusDays(d.days)
                .plusHours(d.hours)
                .plusMinutes(d.minutes)
                .plusSeconds(d.seconds)
    }
}

use(TimeCategory) {
    LocalDateTime.now() + 4.days
}
Run Code Online (Sandbox Code Playgroud)