怎么从excel日期中找到法定节假日?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么从excel日期中找到法定节假日?相关的知识,希望对你有一定的参考价值。
一、高亮显示星期和法定节假日选中D4:AH5区域点击开始菜单下的条件格式——新建规则——使用公式确定单元格的规则输入公式=OR(D$5="六",D$5="日")
法定假日格式输入公式=SUMPRODUCT((D$4>=数据源!$K$6:$K$12)*(D$4<=数据源!$L$6:$L$12))
点击格式——填充——选择一个颜色确定即可
人活一辈子,就活一颗心,心好了,一切就都好了,心强大了,一切问题,都不是问题。
人的心,虽然只有拳头般大小,当它强大的时候,其力量是无穷无尽的,可以战胜一切,当它脆弱的时候,特别容易受伤,容易多愁善感。
心,是我们的根,是我们的本,我们要努力修炼自己的心,让它变得越来越强大,因为只有内心强大,方可治愈一切。
没有强大的敌人,只有不够强大的自己
人生,是一场自己和自己的较量,说到底,是自己与心的较量。如果你能够打开自己的内心,积极乐观的去生活,你会发现,生活并没有想象的那么糟糕。
面对不容易的生活,我们要不断强大自己的内心,没人扶的时候,一定要靠自己站稳了,只要你站稳了,生活就无法将你撂倒。
人活着要明白,这个世界,没有强大的敌人,只有不够强大的自己,如果你对现在的生活不满意,千万别抱怨,努力强大自己的内心,才是我们唯一的出路。
只要你内心足够强大,人生就没有过不去的坎
人生路上,坎坎坷坷,磕磕绊绊,如果你内心不够强大,那这些坎坎坷坷,磕磕绊绊,都会成为你人生路上,一道道过不去的坎,你会走得异常艰难。
人生的坎,不好过,特别是心坎,最难过,过了这道坎,还有下道坎,过了这一关,还有下一关。面对这些关关坎坎,我们必须勇敢往前走,即使心里感到害怕,也要硬着头皮往前冲。
人生没有过不去的坎,只要你勇敢,只要内心足够强大,一切都会过去的,不信,你回过头来看看,你已经跨过了多少坎坷,闯过了多少关。
内心强大,是治愈一切的良方
面对生活的不如意,面对情感的波折,面对工作上的糟心,你是否心烦意乱?是否焦躁不安?如果是,请一定要强大自己的内心,因为内心强大,是治愈一切的良方。
当你的内心,变得足够强大,一切困难,皆可战胜,一切问题,皆可解决。心强则胜,心弱则败,很多时候,打败我们的,不是生活的不如意,也不是情感的波折,更不是工作上的糟心,而是我们内心的脆弱。
真的,我从来不怕现实太残酷,就怕自己不够勇敢,我从来不怕生活太苦太难,就怕自己不够坚强。我相信,只要我们的内心,变得足够强大,人生就没有那么多鸡毛蒜皮。
强大自己的内心,我们才能越活越好
生活的美好,在于追求美好的生活,而美好的生活,源于一颗强大的内心,因为只有内心强大的人,才能消化掉各种不顺心,各种不如意,将阴霾驱散,让美好留在心中。
心中有美好,生活才美好,心中有阳光,人生才芬芳。一颗阴暗的心,托不起一张灿烂的脸,一颗强大的心,可以美化生活,精彩人生,让我们越活越好。
生活有点欺软怕硬,如果你内心很脆弱,生活就会打压你,甚至折磨你,如果你内心足够强大,生活就会奖励你,眷顾你,全世界都会对你和颜悦色。 参考技术A 一、高亮显示星期和法定节假日
选中D4:AH5区域点击开始菜单下的条件格式——新建规则——使用公式确定单元格的规则输入公式=OR(D$5="六",D$5="日")

法定假日格式输入公式=SUMPRODUCT((D$4>=数据源!$K$6:$K$12)*(D$4<=数据源!$L$6:$L$12))

点击格式——填充——选择一个颜色确定即可

二、确定考勤项目
1、出勤统计:点击数据——数据验证——允许下拉序列——在来源处输入考勤项目即可——点击"输入信息"——输入自己想提醒的内容2、说明行:按照截图中的类型输入,后面所带的数字代表小时数或者天数,更加清晰显示实际出勤情况,比如迟到了1个小时就是C1,休年假就是N1,出勤就是输入√,法定节假日加班2小时就是G2,平时加班3小时就是P3等等

注意:由于在考勤区是手动录入的,一旦月份变化,考勤区域是不会变化的,但是统计法定节假日的数据是有公式确定的,也是可以跟随变化的!
三、统计各个员工出勤加班情况
1、在AI6中输入公式=SUMPRODUCT(-(0&REPLACE($D6:$AH6,1,1,"")),-ISNUMBER(FIND(AI$5,$D6:$AH6,1)))即统计各个单元格中包含考勤项目中后所带数字之和
2、周末出勤天数:在AR6中输入公式=SUM(COUNTIFS($D$5:$AH$5,"六","日",D7:AH7,"√"))-AS6注意:这里的周末,不包括法定节假日中的周六/日
3、法定假日出勤:在AO6中输入公式=SUMPRODUCT(($D$4:$AH$4>=数据源!$K$6:$K$12)*($D$4:$AH$4<=数据源!$L$6:$L$12)*(D7:AH7<>""))即是考勤表中带有红色标记的区域内不为空值的个数! 参考技术B 您好,方法
首先小编这里有一列日期数据,然后老板想要让小编找到其中的周六日,小编不想费劲,接下来就来使用公式来迅速的实现这个功能,
如下图中先选中所有日期,然后在工具栏中有一个【条件格式】,
然后点击【条件格式】下的向下的小三角,然后点击【新建规则】,
在弹出的新建格式规则中点击【使用公式确定要设置格式的单元格】,
然后在格式框中输入【=weekday($A1,2)>5】,weekday函数是返回日期对应的数值,$A1表示锁定A列,拖动时只是变化数字也就是只是变化行数,
下图中就是weekday函数的输入参数的对应含义,可以看出我们输入的2表示从星期一到星期日对应输出1-7,
然后点击格式,在格式我么我们选择图案,也就是设置符合公式对应单元格的背景色,这里小编设置为浅绿色,
然后点击确定,格式按钮左侧的是对应格式的预览效果,
然后就会看到excel为我们找到了所有日期中的周六日,是不是很方便! 参考技术C 富人才有节假日吧
java 获取n个工作日后的日期(包含法定节假日双休日节后补班)
1.说明:
获取n个工作日后的日期(包含法定节假日、双休日、节后补班),需要在数据库手动入库当年的法定节假日及节假日调休补班。(也可写在配置文件中读取)
2.工具类代码
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.List; /** * 用于查询n个工作日(包含法定节假日、双休日、调休)后的日期 * @author ywh * @version 创建时间:2019年4月24日 下午5:50:29 */ public class HolidayUtils private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); /** * 用于判断n个工作日(排除节假日、周六日包含节后补班数据)后的日期 * * @author ywh * @version 创建时间:2019年4月24日 上午11:24:58 * @param list 节假日数据源 * @param weekDayList 节后补班数据源 * @param today 计算开始时间 * @param num 多少个工作日 根据需要自行安排 * @return * @throws ParseException */ @SuppressWarnings("deprecation") public static Date getScheduleActiveDate(List<String> list,List<String> weekDayList, Date today,int num) throws ParseException String today1 = DateUtils.parseDate(today, "yyyy-MM-dd"); Date tomorrow = null; int delay = 1; while(delay <= num) tomorrow = getTomorrow(today); //当前日期+1即tomorrow,判断是否是节假日,同时要判断是否是周末,都不是则将scheduleActiveDate日期+1,直到循环num次即可------不是节假日不是周末并且不是补班 if((!isWeekend(sdf.format(tomorrow)) && !isHoliday(sdf.format(tomorrow),list)) || isWorkWeekDay(sdf.format(tomorrow),weekDayList)) if(isWorkWeekDay(sdf.format(tomorrow),weekDayList)) System.out.println(sdf.format(tomorrow) + "::是节假日调休补班"); else System.out.println(sdf.format(tomorrow) + "::是正常工作日"); delay++; today = tomorrow; else if (isHoliday(sdf.format(tomorrow),list)) // tomorrow = getTomorrow(tomorrow); today = tomorrow; System.out.println(sdf.format(tomorrow) + "::是节假日"); else if(isWeekend(sdf.format(tomorrow)))//是周六日并且不是节后补班 if(!isWorkWeekDay(sdf.format(tomorrow),weekDayList)) today = tomorrow; System.out.println(sdf.format(tomorrow) + "::是休息日"); System.out.println(today1+"后"+num+"个工作日后,日期为::" + sdf.format(today)); return today; /** * 获取明天的日期 * * @author ywh * @version 创建时间:2019年4月23日 下午5:18:44 */ public static Date getTomorrow(Date date) Calendar calendar = Calendar.getInstance(); calendar.setTime(date); calendar.add(Calendar.DAY_OF_MONTH, +1); date = calendar.getTime(); return date; /** * 判断是否是weekend * * @author ywh * @version 创建时间:2019年4月23日 下午5:19:27 */ public static boolean isWeekend(String sdate) throws ParseException Date date = sdf.parse(sdate); Calendar cal = Calendar.getInstance(); cal.setTime(date); if(cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) return true; else return false; /** * 判断是否是holiday * * @author ywh * @version 创建时间:2019年4月23日 下午5:19:42 */ public static boolean isHoliday(String sdate, List<String> list) throws ParseException if(list.size() > 0) for(int i = 0; i < list.size(); i++) if(sdate.equals(list.get(i))) return true; return false; /** * 判断是否是补班 * * @author ywh * @version 创建时间:2019年4月23日 下午5:19:54 */ public static boolean isWorkWeekDay(String sdate, List<String> list) throws ParseException if(list.size() > 0) for(int i = 0; i < list.size(); i++) if(sdate.equals(list.get(i))) return true; return false; /** * 把日期格式化成字符串 * @param date * @param format 例: yyyy-MM-dd * @return */ public static String parseDate(Date date, String format) SimpleDateFormat formater = new SimpleDateFormat(format); String dateString; dateString = formater.format(date); return dateString;
3.测试调用
public String holiday(String date) Date today1 = new Date(); int num = 10;// List<Holiday> holidayList = holidayService.queryAllHoliday("0");//查询出法定节假日list List<Holiday> weekDayList =holidayService.queryAllHoliday("1");//查询节假日调休补班list List hoList = new ArrayList();//节假日数据源 List weList = new ArrayList();//节后节前数据源 for (Holiday holiday : holidayList) hoList.add(holiday.getDate()); for (Holiday holiday : weekDayList) weList.add(holiday.getDate()); try Date date111 = HolidayUtils.getScheduleActiveDate(hoList,weList,today1,num); System.out.println(HolidayUtils.parseDate(date111, "yyyy-MM-dd")); catch (ParseException e) e.printStackTrace(); return "";
4.sql脚本
DROP TABLE IF EXISTS `holiday`; CREATE TABLE `holiday` ( `GUID` varchar(36) COLLATE utf8_bin NOT NULL, `DATE` varchar(10) COLLATE utf8_bin DEFAULT NULL, `TYPE` varchar(1) COLLATE utf8_bin DEFAULT NULL COMMENT ‘0:法定节假日;1 节假日调休补班(如某个节假日前后周六日上班的情况)‘, PRIMARY KEY (`GUID`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT=‘此表需每年根据法定节假日具体时间更新一次‘; -- ---------------------------- -- Records of holiday -- ---------------------------- INSERT INTO `holiday` VALUES (‘1‘, ‘2019-05-01‘, ‘0‘); INSERT INTO `holiday` VALUES (‘10‘, ‘2019-09-15‘, ‘0‘); INSERT INTO `holiday` VALUES (‘11‘, ‘2019-10-01‘, ‘0‘); INSERT INTO `holiday` VALUES (‘12‘, ‘2019-10-02‘, ‘0‘); INSERT INTO `holiday` VALUES (‘13‘, ‘2019-10-03‘, ‘0‘); INSERT INTO `holiday` VALUES (‘14‘, ‘2019-10-04‘, ‘0‘); INSERT INTO `holiday` VALUES (‘15‘, ‘2019-10-05‘, ‘0‘); INSERT INTO `holiday` VALUES (‘16‘, ‘2019-10-06‘, ‘0‘); INSERT INTO `holiday` VALUES (‘17‘, ‘2019-10-07‘, ‘0‘); INSERT INTO `holiday` VALUES (‘18‘, ‘2019-04-28‘, ‘1‘); INSERT INTO `holiday` VALUES (‘19‘, ‘2019-05-05‘, ‘1‘); INSERT INTO `holiday` VALUES (‘2‘, ‘2019-05-02‘, ‘0‘); INSERT INTO `holiday` VALUES (‘20‘, ‘2019-09-29‘, ‘1‘); INSERT INTO `holiday` VALUES (‘21‘, ‘2019-10-12‘, ‘1‘); INSERT INTO `holiday` VALUES (‘3‘, ‘2019-05-03‘, ‘0‘); INSERT INTO `holiday` VALUES (‘4‘, ‘2019-05-04‘, ‘0‘); INSERT INTO `holiday` VALUES (‘5‘, ‘2019-06-07‘, ‘0‘); INSERT INTO `holiday` VALUES (‘6‘, ‘2019-06-08‘, ‘0‘); INSERT INTO `holiday` VALUES (‘7‘, ‘2019-06-09‘, ‘0‘); INSERT INTO `holiday` VALUES (‘8‘, ‘2019-09-13‘, ‘0‘); INSERT INTO `holiday` VALUES (‘9‘, ‘2019-09-14‘, ‘0‘);
以上是关于怎么从excel日期中找到法定节假日?的主要内容,如果未能解决你的问题,请参考以下文章