有没有一种简单的方法可以在 Joda Time 中进入以人为本的风格时期?
例如,如果我想要最后 4 天,我的意思是,给我一个周期(或间隔可能更合适)3 整天,以及当前正在进行的日期到当前时间。所以我希望,到当前时间的间隔为 1 天、1 天、1 天、n 毫秒。
或者在过去的 5 周内,给我 4 个整周的时间,以及当前正在进行的一周直到当前时间。
我已经花了一些时间来解决这个问题,困难的部分是尝试将一个时期“标准化”为人类对时期结束的定义。因此,到目前为止,您需要标准化到一天的开始(始终是午夜),然后找到那个和现在之间的间隔。对于非常棘手的月份,您需要规范化到月初并转到现在......等等。为了让这变得更加困难,我试图避免使用特定于时期的规范化逻辑编写一个巨大的案例语句我正在绞尽脑汁试图找到一种通用的方法。
这是我当前的代码(在 Groovy 中)
static List generatePreviousIntervals(BaseSingleFieldPeriod period,
int count,
DateTime end = DateTime.now()) {
if (count < 1) {
return []
}
def intervals = []
Interval last
count.times {
def finish = last?.start ?: end
def next = new Interval(period, finish)
intervals.add(next)
last = next
}
// reverse so intervals are in normal progression order
intervals.reverse()
}
这是 Joda Time 可以轻松做到的事情吗?还是我必须有很多关于手动滚动特定时间间隔的逻辑?