知道年月日,周几,请算出某个月零某天后是星期几,距离现在多少天(请用代码实现,谢绝调用 API方法)

// 定义一周的中文名称
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];
}
posted @ 2024-03-11 16:35  晚暮听灯  阅读(4)  评论(0编辑  收藏  举报