数据

    /*** 节日是某月的第几个星期几* 例如:0637  父亲节 06是6月,3是第三个星期, 7是星期日。0351其中1是星期一* 注意:如果是最后一个星期天,表示为-17,-1是星期数,7是星期日*/private static String[] wFtv = new String[]{"黑人节 0117","世界麻风日 01-17","日本成人节 0121","中小学安全教育日 0351","母亲节 0527","全国助残日 0537","父亲节 0637","合作节 0716","被奴役国家周 0737","国际聋人节 0947","国际住房日 1011 ","感恩节 1144"};

思路:

本周几【从星期天开始计算】,如果今天星期二,那么返回 那么周天就是1,周六就是7

A:当前日期是周几,周二就返回2,周天就返回7

  • A = (instance.get(Calendar.DAY_OF_WEEK)-1);  if (A== 0) A= 7;//由于java的DAY_OF_WEEK是从周天开始算的,周天是1,周六是7,所以等于周天的时候调整值

B=要求的日期时周几,例如“母亲节 0527”中的0,0代表星期天;B=0,例如”国际和平日 0932“中的2,2代表星期2;

如果是求本月的第几周的星期几:

C=A-B。

第一步:求出两个日期之间星期的距离

如果C>0 ,假如A是周五,B是周三,表示他们俩之间的距离是(7-A)+B

如果C<0 ,假如A是周三,B是周五,表示他们俩之间的距离是B-A

第二步:加上第几个星期的天数,设置

给月初的日期加上:【C+7*(第几个星期数-1)】

如果是求本月的倒数第几周的星期几:

C=A-B。

第一步:求出两个日期之间星期的距离

如果C>0 ,假如A是周五,B是周三,表示他们俩之间的距离是B-A

如果C<0 ,假如A是周三,B是周五,表示他们俩之间的距离是(7-B)+A

第二步:加上第几个星期的天数,设置

   给月末的日期减去:【C+7*(第几个星期数-1)】

代码:

        Map<String, String> wFtvMap = Arrays.stream(wFtv).collect(Collectors.toMap(k -> k.split(" ")[0], k -> k.split(" ")[1]));String dateNum = "";if(wFtvMap.containsKey(input)){System.out.println(getDayInWeek(wFtvMap.get(input)));}/*** 获取一个月中第几个周的第几天*/private static String getDayInWeek(String dateNum){int month = Integer.valueOf(dateNum.substring(0,2));int order = Integer.valueOf(dateNum.substring(2,dateNum.length()-1));int weekNum = Integer.valueOf(dateNum.substring(dateNum.length()-1,dateNum.length()));//设置月份:注意,设置月份的时候,设置如果是2,实际是3月份instance.set(instance.get(Calendar.YEAR),month-1,instance.get(Calendar.DATE));int distance = 0;if(order>0 && order<6){//第几个星期instance.set(Calendar.DAY_OF_MONTH, 1);int whatWeekNow = (instance.get(Calendar.DAY_OF_WEEK)-1);if (whatWeekNow == 0)  whatWeekNow = 7;//由于java的DAY_OF_WEEK是从周天开始算的,周天是1,周六是7,所以等于周天的时候调整值int diff = whatWeekNow-weekNum;//月初处于本月第几周-设置的日期是周几if(diff>0){distance = 7-whatWeekNow+weekNum;}else if(diff<0){distance = weekNum - whatWeekNow;}instance.add(Calendar.DAY_OF_MONTH,distance+(order-1)*7);}else if (order<0){//获取倒数第几个星期instance.add(Calendar.MONTH, 1);instance.set(Calendar.DAY_OF_MONTH, 1);instance.add(Calendar.DAY_OF_MONTH, -1);//本月最后一天int whatWeekNow = (instance.get(Calendar.DAY_OF_WEEK)-1);if (whatWeekNow == 0)  whatWeekNow = 7;//由于java的DAY_OF_WEEK是从周天开始算的,周天是1,周六是7,所以等于周天的时候调整值int diff = whatWeekNow-weekNum;//月末处于本月第几周-设置的日期是周几if(diff>0){distance = weekNum-whatWeekNow;}else{distance = (7-weekNum)+whatWeekNow;}instance.add(Calendar.DAY_OF_MONTH,-distance+(order+1)*7);}else{throw new StringIndexOutOfBoundsException("当月的星期数不能大于5");}return sdf.format(instance.getTime());}public static void main(String[] args) {System.err.println(getDayInWeek("06-17"));//2021-06-27System.err.println(getDayInWeek("0521"));//2021-05-10System.err.println(getDayInWeek("04-36"));//2021-04-10System.err.println(getDayInWeek("0534"));//2021-05-20}

获取一个月中第几个周的第几天的具体日期相关推荐

  1. java计算一个月有几周_java 如何获取 一个月 有多少周

    展开全部 你说需要计算一个月有多少周,若是指,一月,二月一直到十二月每个月有多少周的话,可以用32313133353236313431303231363533e59b9ee7ad94313333613 ...

  2. android 根据时间获取周几_android 调用系统 calendars 如何获取一个指定日期的所有日程 event。...

    android 调用系统 (CalendarContract)calendars 如何获取一个指定日期的所有日程(包含周期事件) ? 难点在于,很多event存的时候是有rrule的,也就是周期. 以 ...

  3. 获取一个月,三个月,一周,几天前的日期,年份

    参考dayjs官网 https://dayjs.fenxianglu.cn/category/#typescript 下载网址 1.使用方法,可以安装也可以直接引入 1.安装参考官网点击跳转 2.先下 ...

  4. c# 一个月中的工作日_在Excel中查找一个月中的第N个工作日

    c# 一个月中的工作日 Some events occur on the Nth weekday of a specific month each year. Maybe your book club ...

  5. oracle 当前时间年月日时分秒,oracle获取当前年月日时分秒季度周

    oracle中如何获取系统当前时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; ORACLE里获取一个时间的年.季.月.周.日 ...

  6. 获取一个月有多少天,生成日历

    项目场景: 项目中需要实现一个月日历的功能,通过dayjs进行封装实现获取一个月共有多少天,通过获取到的数据渲染生成日历 功能流程 根据输入的时间,利用dayjs获取每月第一天及最后一天 在while ...

  7. oracle sysdate取年月日,oracle获取当前年月日时分秒季度周

    oracle获取当前年月日时分秒季度周 2015-03-27 16:52阅读: 千万里的追寻 只愿静静抚慰那仅剩的0.1克自由灵魂 关注 oracle中如何获取系统当前时间 select to_cha ...

  8. LocalDate获取一年的周数,及指定周数周一到周日对应得日期

    java8如何获取一年拥有的周数及周数对应的日期 下面是一个测试的例子 public class TestWeekNumAndDate {/*** @param args*/public static ...

  9. calendar获取本周一的日期_Swift - 获取本周(或指定日期所在周)的第一天、最后一天日期...

    原来我写过一篇文章介绍如何计算当月.当年.或者指定年月的第一天.最后一天日期(点击查看).有网友问要怎么得到指定周的的第一天.最后一天日期.下面我通过代码进行演示. 一.获取本周的第一天.最后一天日期 ...

最新文章

  1. 使用 Node.js 开发简单的脚手架工具
  2. 【AI初识境】深度学习中常用的损失函数有哪些?
  3. Android中Services简析
  4. 第二章 TestNG环境搭建
  5. Linux之seq命令
  6. 【小程序案例】支付宝小程序-MQTT模器,IoT设备通过WSS接入阿里云IoT物联网平台...
  7. Java对象序列化文件追加对象的问题,以及Java的读取多个对象的问题解决方法。
  8. 曲线运动与万有引力公式_考前冲刺,人手一份!高中物理公式大全,不看太亏...
  9. linux下raid0创建教程,Linux 常见 RAID 及软 RAID 创建
  10. [Leetcode] 158. Read N Characters Given Read4 II - Call multiple times 解题报告
  11. python计算单词长度_python – 返回字符串中的单词长度
  12. 小程序入口构造工具二维码测试工具
  13. Ink脚本语言学习笔记(小结)
  14. 【20220504】软件开发模式
  15. C语言如何产生一个随机数,rand函数的使用
  16. 【笔记】OpenSSL 使用
  17. Drools 7 用OOPath遍历嵌套类型的实体对象
  18. java SWT:MouseEvent,KeyEvent中stateMask字段的用法
  19. Newtonsoft.Json.JsonConvert.SerializeObject()
  20. 程序员要被革命了,微软推出自己会编程的“AI 程序员”插件

热门文章

  1. Java 寻找指定文件夹里特定字符串
  2. ActionBar-Fragment
  3. java 生成 文件 md5_JAVA版文件MD5生成器
  4. 苹果App Store公布最新应用审核标准
  5. 击鼓传花---c语言实现
  6. UOS如何添加window字体或者非商业字体
  7. 目标感-培养年轻人自己的目标感
  8. 深富策略:指数继续反弹
  9. 消失的预测、陨落的交叉熵
  10. ORACLE存储过程批量建表-笔记