Java基础 - 练习(五)根据今天日期获取一周内的日期(基姆拉尔森公式)

基姆拉尔森计算公式用于计算一周内的日期。比如给你年月日,从而计算今天是星期几。

基姆拉尔森公式

 Week = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1) mod 7, 3<=m<=14

Week的取值范围是0 ~ 6,其中0代表星期日,1 ~ 6分别代表星期一到星期六。注意在运算时要把1月和2月看为是上一年的13月和14月代入计算!

int Date(int y,int m,int d)
{
    if(m==1||m==2){//一二月换算
        m+=12;
        y--;
    }
    int week = (d + 2*m +3*(m+1)/5 + y + y/4 - y/100 + y/400 + 1)%7;
    return week;//其中0~6表示周日、周一到周六
}

计算今天是周几

public static void dateToWeek1(){
    Scanner scanner = new Scanner(System.in);
    // 声明 int 类型的变量 y 用来获取控制台输入的年
    System.out.print("年:");
    int y = scanner.nextInt();
    // 声明 int 类型的变量 m 用来获取控制台输入的月
    System.out.print("月:");
    int m = scanner.nextInt();
    // 声明 int 类型的变量 d 用来获取控制台输入的日
    System.out.print("日:");
    int d = scanner.nextInt();
    /********** Begin **********/
    // 第一步,判断变量 m 的值是否是 1 或者 2。如果是,则变量 m 在原来的基础上加12,同时变量 y 在原来的基础上减1
    if (m == 1 || m == 2) {
        m += 12;
        y--;
    }
    // 第二步,使用基姆拉尔森日期公式,计算星期几
    int iWeek = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
    // 第三步,使用多路分支判断星期几。如果是星期一,则在控制台输出"星期一";如果是星期二,则在控制台输出"星期二"....以此类推,如果是星期日,就是在控制台输出"星期日"
    switch (iWeek) {
        case 0:
            System.out.print("星期一");
            break;
        case 1:
            System.out.print("星期二");
            break;
        case 2:
            System.out.print("星期三");
            break;
        case 3:
            System.out.print("星期四");
            break;
        case 4:
            System.out.print("星期五");
            break;
        case 5:
            System.out.print("星期六");
            break;
        case 6:
            System.out.print("星期日");
            break;
    }
    /********** End **********/
}

在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值