gpt4 book ai didi

java - Joda Time - 倒退 1 年,针对特定的星期几进行调整

转载 作者:行者123 更新时间:2023-11-29 03:51:56 26 4
gpt4 key购买 nike

我想用 joda 时间回到 1 年前,但我不想从 2010 年 2 月 15 日到 2009 年 2 月 15 日,而是,如果 2010 年 2 月 15 日是星期一,那么我想去最近的 2009 年星期一。

目前我正在使用这个:

int dayNumber = Integer.parseInt(iDate.dayOfWeek().getAsString());

if(dayNumber == 1) { // start of week
println(iDate.plusYears(-1).plusDays(1).dayOfWeek().getAsString());
}

目前效果很好,但可能有更安全的方法可以让您轻松回到 5 年前。

最佳答案

我会使用 Joda Time 方法返回 1 年,然后使用一个小的 switch 语句将其移动到适当的日期。从你的问题中无法判断你是否想去星期一。正如@Klas 指出的那样,自己进行计算会错过重要的事情,例如闰年。

iDate = iDate.minusYears(1);
switch (iDate.getDayOfWeek()) {
case 1:
// monday so no change
break;
case 2:
iDate = iDate.minusDays(1);
break;
case 3:
iDate = iDate.minusDays(2);
break;
...
}

如果你想变得花哨,你可以构建一个小网格来加速它。

// days in joda time are 1 based so 0 won't be used here
private static final int[] daysShift = new int[] = {0, 0, -1, -2, -3, 3, 2, 1};
...
iDate = iDate.minusYears(1);
// based on the current day, shift us by a certain number of days, + or -
iDate.plusDays(daysShift[iDate.getDayOfWeek()]);

关于java - Joda Time - 倒退 1 年,针对特定的星期几进行调整,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8356722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com