知道年月日,周幾,請算出某個月零某天后是星期幾,距離現在多少天(請用程式碼實現,謝絕呼叫 API方法)

晚暮听灯發表於2024-03-11

package com.huang.algorithm;

public class Demo033 {
public static void main(String[] args) {
System.out.println(distance(2015,12,1,1,6));
}

// 定義一週的中文名稱
public static String[] week = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
// 定義平年每月天數
public static int[] monthday1 ={0,31,28,31,30,31,30,31,31,30,31,30,31};
// 定義閏年每月天數
public static int[] monthday2 ={0,31,29,31,30,31,30,31,31,30,31,30,31};

/**
 * 計算兩個日期之間的天數差,並返回包含距離天數和星期的字串。
 *
 * @param year 年份
 * @param month 月份
 * @param day 日期
 * @param newMonth 新的月份
 * @param newDay 新的日期
 * @return 返回格式化後的字串,包含天數差和對應的星期
 */
public static String distance(int year, int month, int day, int newMonth, int newDay){
    int sum = 0;
    // 當月和新月總和大於等於12,說明跨年計算
    if (month + newMonth >= 12) {
        // 計算閏年和非閏年的天數差
        if (((year+1)%4 == 0 && (year+1)%100 != 0) || (year+1)%400 == 0){
            // 閏年總天數
            sum += 366 + newDay;
            // 累加新年的月份天數
            for (int i = 0; i < newMonth-12;i++){
                sum += monthday2[i];
            }
        } else {
            // 非閏年總天數
            sum += 365 + newDay;
            // 累加新年的月份天數
            for (int i = 0; i < newMonth-12;i++){
                sum += monthday1[i];
            }
        }
    } else {
        // 同一年內計算天數差
        for (int i=0;i<newMonth;i++) {
            sum += monthday1[i];
        }
        sum += newDay;
    }
    // 返回計算結果,包含天數差和對應的星期
    return "距離天數:" + sum + ";" + week[sum%7];
}

}

相關文章