Java根据日期计算星期几的四种方法
更新时间:2023年09月25日 11:14:00 作者:哭哭啼
在我们日常业务代码中,经常要用到星期几,下面这篇文章主要给大家介绍了关于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 在原来的基础上减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 < 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); }
总结
到此这篇关于Java根据日期计算星期几的四种方法的文章就介绍到这了,更多相关Java日期计算星期几内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
相关文章
redis redisson 集合的使用案例(RList、Rset、RMap)
这篇文章主要介绍了redis redisson 集合的使用案例(RList、Rset、RMap),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-07-07java客户端Etcd官方仓库jetcd中KeepAlive接口实现
这篇文章主要为大家介绍了java客户端Etcd官方仓库jetcd中KeepAlive接口实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,多多加薪2022-02-02java多线程编程必备volatile与synchronized深入理解
这篇文章主要介绍了java多线程编程必备volatile与synchronized的深入理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-04-04
最新评论