美文网首页
Calendar日期类(判断星期的神器)

Calendar日期类(判断星期的神器)

作者: 得力小泡泡 | 来源:发表于2020-03-31 16:40 被阅读0次

创建一个日期类,其他now表示现在的日期
Calendar now = Calendar.getInstance();
//将now这个类,赋值到year年,month月,date
now.set(year,month,date)

注意:
month是从0开始的,而月份是从1开始的,所以month需要加一。
0 -- 1月
1 -- 2月
...
11 -- 12月

week是从周日开始,1表示周日...6表示周五,7表示周六
1 -- 周日
2 -- 周一
3 -- 周二
...
7 -- 周六

import java.util.Calendar;

public class Main {
    
    public static void main(String[] args) {
        Calendar now = Calendar.getInstance();
        now.set(2017,2,29);
        int year1 = now.get(Calendar.YEAR);
        int month1 = now.get(Calendar.MONTH);
        int day1 = now.get(Calendar.DATE);
        System.out.println(year1 + ":" + (month1 + 1) + ":" + day1);//输出2017:3:29
        
        //在原来的基础上加上2个月减3号
        now.add(Calendar.MONTH, 2);
        now.add(Calendar.DATE, -3);
        
        int year2 = now.get(Calendar.YEAR);
        int month2 = now.get(Calendar.MONTH);
        int day2 = now.get(Calendar.DATE);
        System.out.println(year2 + ":" + (month2 + 1) + ":" + day2);//输出2017:4:26
        
        boolean flag = false;
        //判断now这一天是否是星期5
        //1表示周日...6表示周五,7表示周六
        if (now.get(Calendar.DAY_OF_WEEK) == 6) 
            flag = true;
        System.out.println(flag);//2017:4:26不是星期5
    }
}

练习1 算法提高 日期计算

题目描述

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  已知2011年11月11日是星期五,问YYYY年MM月DD日是星期几?注意考虑闰年的情况。尤其是逢百年不闰,逢400年闰的情况。
输入格式
  输入只有一行
  YYYY MM DD
输出格式
  输出只有一行
  W
数据规模和约定
  1599 <= YYYY <= 2999
  1 <= MM <= 12
  1 <= DD <= 31,且确保测试样例中YYYY年MM月DD日是一个合理日期
  1 <= W <= 7,分别代表周一到周日
样例输入
2011 11 11
样例输出
5

算法分析

直接套Calendar,
注意:这里输出的星期是1 <= W <= 7,分别代表周一到周日,我们算出来的星期天是0,因此需要特判,若输出是0,则输出7
还需要注意的是c.set(year, month - 1, date),月份需要减1

Java 代码

import java.util.Calendar;
import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int year = scan.nextInt();
        int month = scan.nextInt();
        int date = scan.nextInt();
        Calendar c = Calendar.getInstance();
        c.set(year, month - 1, date);
        int week = c.get(Calendar.DAY_OF_WEEK) - 1;
        if(week == 0) System.out.println(7);
        else System.out.println(week);
    }
}

练习2 算法训练 黑色星期五

资源限制
时间限制:1.0s 内存限制:512.0MB

问题描述
  有些西方人比较迷信,如果某个月的13号正好是星期五,他们就会觉得不太吉利,用古人的说法,就是“诸事不宜”。请你编写一个程序,统计出在某个特定的年份中,出现了多少次既是13号又是星期五的情形,以帮助你的迷信朋友解决难题。
  说明:(1)一年有365天,闰年有366天,所谓闰年,即能被4整除且不能被100整除的年份,或是既能被100整除也能被400整除的年份;(2)已知1998年1月1日是星期四,用户输入的年份肯定大于或等于1998年。
  输入格式:输入只有一行,即某个特定的年份(大于或等于1998年)。
  输出格式:输出只有一行,即在这一年中,出现了多少次既是13号又是星期五的情形。
输入输出样例
样例输入
1998
样例输出
3、

算法分析

枚举该年每个月的13日是不是星期5,若是sum ++

Java 代码

import java.util.Calendar;
import java.util.Scanner;

public class Main {
    
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int year = scan.nextInt();
        Calendar c = Calendar.getInstance();
        int sum = 0;
        for(int i = 0;i < 12;i ++)
        {
            c.set(year, i,13);//year年,第i个月的13号
            if(c.get(Calendar.DAY_OF_WEEK) == 6)
                sum ++;
        }
        System.out.println(sum);
    }
}

相关文章

网友评论

      本文标题:Calendar日期类(判断星期的神器)

      本文链接:https://www.haomeiwen.com/subject/bqxguhtx.html