Java 根据日期计算星期几

2024-03-20 4790阅读

方法一:根据基姆拉尔森日期公式

 public static void main(String args[]) {
        Scanner scanner = new Scanner(System.in);
        // 声明 int 类型的变量 y 用来获取控制台输入的年
        int y = scanner.nextInt();
        // 声明 int 类型的变量 m 用来获取控制台输入的月
        int m = scanner.nextInt();
        // 声明 int 类型的变量 d 用来获取控制台输入的日
        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 **********/
    }

方法二:Calendar类

 /**
     * 日期转星期
     * 
     * @param datetime "2017-01-01"
     * @return
     */
public static String dateToWeek(String datetime) {
		SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd");
		String[] weekDays = { "星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六" };
		Calendar cal = Calendar.getInstance(); // 获得一个日历
		Date datet = null;
		try {
			datet = f.parse(datetime);
			cal.setTime(datet);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。
		if (w  

方法三:GergorianCalendar类

 public static void main(String []args)
    {
        Scanner cin=new Scanner(System.in);
        System.out.println("请输入年,月,日:");
        while(cin.hasNext())
        {
            int year=cin.nextInt();
            int month=cin.nextInt();
            int day=cin.nextInt();
            GregorianCalendar gre=new GregorianCalendar();
            Date date=new Date(year-1900,month-1,day); //年要减去1900,月份是0-11
//            System.out.println(date);
 
            gre.setTime(date);
            int weekday=gre.get(Calendar.DAY_OF_WEEK)-1; //0是星期天
            String []s={"星期天","星期一","星期二","星期三","星期四","星期五","星期六",};
            System.out.println(year+" "+month+" "+day+" "+s[weekday]);
        }

方法四:LocalDateTime

public static void main(String[] args) {
        getDayOfWeek(2023,9,5);
    }
    /**
     * 输入年月日,确保输入日期符合正确年月日,如一个月不能能输入40
     * @param year 年
     * @param month 月
     * @param day 日
     */
    private static void getDayOfWeek(int year,int month,int day) {
        LocalDateTime dateTime= LocalDateTime.now();
//        LocalDateTime with = dateTime.withYear(2020).withMonth(7).withDayOfMonth(2);
        LocalDateTime with = dateTime.withYear(year).withMonth(month).withDayOfMonth(day);
//      LocalDateTime with = dateTime.with(LocalDate.of(year,month,day));
        DayOfWeek dayOfWeek = with.getDayOfWeek();
        int value = dayOfWeek.getValue();
        //获取周几,1-7 代表周一到周日
        System.out.println(value);
        //获取周几,英文MONDAY,TUESDAY。。。
        System.out.println(dayOfWeek);
    }
Java 根据日期计算星期几 第1张
()
Java 根据日期计算星期几 第2张
()

    免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

    目录[+]