3 回答

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超2個(gè)贊
看起來您想要的想法是一種按月遞減的遞歸方法。
static int dayNumberInYear(int day, Month month, int year)
? ? {
? ? ? if(!month.equals(Month.JANUARY)) {
? ? ? ? return day + dayNumberInYear(numberOfDaysInMonth(month.minus(1), year), month.minus(1), year);
? ? ? } else {
? ? ? ? return day;
? ? ? }
}
請(qǐng)注意,在這種遞歸方法中,基本情況是現(xiàn)在是一月,我們只需返回一月的當(dāng)天。否則,我們將添加當(dāng)前月份的某一天,然后添加之前每個(gè)月的所有天數(shù)。
它也可以作為 for 循環(huán)來完成。
static int dayNumberInYearByLoop(int day, Month month, int year) {
? int totalDays = day;
? for (int i = month.getValue();i>1;i--) {
? ? totalDays += numberOfDaysInMonth(Month.of(i), year);
? }
? return totalDays;
}

TA貢獻(xiàn)1911條經(jīng)驗(yàn) 獲得超7個(gè)贊
package SO;
import java.time.Month;
public class test {
//below array contain number of total days in that month(non leap year).
static int arrTotal[] = { 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
public static void main(String[] args) {
System.out.println(dayNumberInYear(3, Month.MARCH, 2019));
}
static int dayNumberInYear(int day, Month month, int year) {
int dayNumberInYear = day + numberOfDaysInMonth(year, month);
return dayNumberInYear;
}
private static int numberOfDaysInMonth(int year, Month month) {
int add = 0;
if (year % 4 == 0)
add++;
int a = month.getValue();
return arrTotal[(a - 2)] + add;
}
}

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊
就這么簡(jiǎn)單。
public static String dayNumberInYear(String sDate) {
//sDate formate 2023-02-20, you can change local date format
LocalDate localDate = LocalDate.parse(sDate);
int dayOfYear = localDate.getDayOfYear();
return dayOfYear > 99 ? "" + dayOfYear : dayOfYear > 9 ? "0" + dayOfYear : "00" + dayOfYear;
}
添加回答
舉報(bào)