Java 根据日期计算星期几

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

 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 在原来的基础上减1if (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 blocke.printStackTrace();}int w = cal.get(Calendar.DAY_OF_WEEK) - 1; // 指示一个星期中的某天。if (w < 0)w = 0;return weekDays[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);}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部