由于公司需要按照工作日进行计算,所以需要在数据库存储一套日历数据,标明每一天是工作日还是假日。
1.
现设计一个表,表结构如下:
CREATE TABLE `sys_calendar` (`id` int(11) NOT NULL AUTO_INCREMENT,`day` varchar(32) DEFAULT NULL COMMENT '日期',`type` tinyint(11) DEFAULT NULL COMMENT '日期类型:0-工作日,1-假日补班,2-法定假日,3-公休日',`year` varchar(16) DEFAULT NULL COMMENT '年份',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=366 DEFAULT CHARSET=utf8;2. 调用http://timor.tech/api/holiday/info/$date判断是假期还是工作日。
具体代码如下:public static String request(String httpArg) {//工作日对应结果为 0, 休息日对应结果为 1, 节假日对应的结果为 2String httpUrl = "http://timor.tech/api/holiday/info/";String result = "";StringBuffer sbf = new StringBuffer();httpUrl = httpUrl  + httpArg;try {URL url = new URL(httpUrl);HttpURLConnection connection = (HttpURLConnection) url.openConnection();connection.setRequestMethod("GET");connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36)");connection.connect();InputStream is = connection.getInputStream();BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));String strRead;while ((strRead = reader.readLine()) != null) {sbf.append(strRead);sbf.append("\r\n");}reader.close();JSONObject jsonObject = JSON.parseObject(String.valueOf(sbf));
//            System.out.println("aaaaaa"+jsonObject);result = jsonObject.getJSONObject("type").getString("type");} catch (Exception e) {e.printStackTrace();}return result;}public static void main(String[] args){Calendar cal = Calendar.getInstance();//获取Calendarcal.clear();cal.setTime(new Date());   //设置日期cal.set(Calendar.MONTH,0); //设置月份从1月开始cal.set(Calendar.DAY_OF_MONTH, 1);Integer year = cal.get(Calendar.YEAR); //获取设置的日期年份for (int i = 0; i < 12; i++) {//循环输出一年中的12个月,Integer month = cal.get(Calendar.MONTH)+1;int day=cal.getActualMaximum(Calendar.DAY_OF_MONTH);//计算每个月有多少天
//            System.out.println(year+"年"+month+"月"+"有"+day+"天");for (int j = 0; j < day; j++,cal.add(Calendar.DATE, 1)) {//循环输出一个月中的每一天,cal.add()方法设置每次增加一天Integer days = cal.get(Calendar.DATE);
//                System.out.println(days+"日");SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");String theDay = sf.format(cal.getTime());String str = request(theDay);if ("0".equals(str)){// 工作日System.out.println("insert into sys_calendar (day,type,year) values ('"+ theDay+"',"+ 0 +",'"+ year+"');");}else if ("2".equals(str)){// 法定节假日System.out.println("insert into sys_calendar (day,type,year) values ('"+ theDay+"',"+ 2 +",'"+ year+"');");}else if ("3".equals(str)){// 节假日调休补班System.out.println("insert into sys_calendar (day,type,year) values ('"+ theDay+"',"+ 1 +",'"+ year+"');");}else if ("1".equals(str)){// 公休日System.out.println("insert into sys_calendar (day,type,year) values ('"+ theDay+"',"+ 3 +",'"+ year+"');");}}cal.add(Calendar.MONTH, 0);// cal.add()方法设置每次增加一个月}}
更新于2022-01-03:此接口http://api.goseek.cn/Tools/holiday不能使用了,大家可以到网上找类似的获取节假日的接口。此接口可用:http://timor.tech/api/holiday/info/$date

当前年的日历存储到数据库,用于判断某一天是假期还是工作日相关推荐

  1. PolarFS :一个用于共享存储云数据库的超低延迟和容错分布式文件系统

    目录 1. 简介 2. 背景 3. 架构 4. I/O 执行模型 5. 一致性模型 6. FS中层的实现 7. 设计选择和经验教训 8. 价值评估 9. 相关工作 10. 结论 PolarFS : A ...

  2. java rsa 存数据库_java – 如何创建RSA密钥对以便将其存储在数据库中?

    我正在尝试实现变异加密算法(理论上由我开发)并作为需求的一部分,我需要生成一个RSA密钥对并将其存储在数据库中,以便以后作为加密过程的一部分进行检索(仅用于加密会话密钥,以便可以使用加密的消息安全地发 ...

  3. JavaWeb上传图片到服务器,存储到数据库,并在页面显示

    JavaWeb上传图片到服务器,存储到数据库,并在页面显示 Servlet @Overrideprotected void doPost(HttpServletRequest req, HttpSer ...

  4. MongoDB 一个基于分布式文件存储的数据库

    简介 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. 特点 它的特点是高性能.易部署.易使用,存储数据非常方便.主要功能特性有: ...

  5. 如何将类序列化并直接存储入数据库

    本文将从这两个格式器入手,先向大家介绍分别用它们如何实现序列化和反序列化,然后比较两种格式器的不同点.接着我会向大家介绍实现序列化对对象类型的一些要求,同时还要向大家介绍两种不同的序列化方式:基本序列 ...

  6. python 内存数据库下载,Python 文件存储和数据库

    Python 中数据存储的方式和其他语言没什么区别,主要分为两个方面:文件存储和数据库存储. 文件存储 文件存储的方法也分为很多种,主要包括:Python 内置方法 NumPy 模块方法 os 模块方 ...

  7. python 爬虫源码 selenium并存储数据库_使用pythonSelenium爬取内容并存储MySQL数据库的实例图解...

    这篇文章主要介绍了python Selenium爬取内容并存储至MySQL数据库的实现代码,需要的朋友可以参考下 前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium ...

  8. SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis.

    SSDB 一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis. 特性 替代 Redis 数据库, Redis 的 100 倍容量 LevelDB 网络支持, 使用 C/C++ ...

  9. 将模板内容存储到数据库,通过URL访问报表

    如果我们想对我们的报表做更多控制,比如动态修改模板的内容,或者模板权限跟自己的业务结合起来,此时我们可以通过动态读取存储在数据库的模板内容,来精细化的控制我们的报表,这时我们可以创建网络报表. 网络报 ...

最新文章

  1. 由一次奇怪的编译出错想起的
  2. 数据包编辑工具bittwiste
  3. C++(Windows下计算时间变化(时间差))
  4. javascript 中的call和apply
  5. Oracle Solaris 11 Express发布了
  6. 1003 阶乘后面0的数量
  7. 如何制作自己的R包?
  8. 北大cls_战报 | 第七届CLS“联合杯”篮球联赛
  9. JavaScript在一个数组中插入另一个数组
  10. 导航可与红绿灯结合起来
  11. NGFF、M.2、PCIe、NVMe概念区分以及PCIEx1 x4 x8 x16区别
  12. 计算机word表格公开课ppt,word表格制作课件公开课.ppt
  13. 详解ISA防火墙策略元素
  14. 计算机科学导论实验报告,上海电力学院计算机导论实验报告.docx
  15. wetool企业微信营销管理系统开发
  16. 三个和尚没水喝的启发
  17. java中如何将字符串转化为字符_如何在Java中将字符串转换为运算符?
  18. android 模拟手指点击,『Android Tip』-- 模拟手势操作
  19. 蓝桥杯部分题型(奇怪的比赛,电话号码,palindrome)
  20. 如何在YesDev,多团队协作程序员客栈的整包项目?

热门文章

  1. su PK sudo
  2. 知识付费系统源码下载带课程数据+一键同步功能和更新设置
  3. 零基础学鸿蒙编程-UI控件_DatePicker
  4. Android10源码下载与编译(Mac移动硬盘)
  5. 2018年小米校招笔试题
  6. 手机计算机怎么玩24点游戏,计算器游戏怎么玩 新手前期玩法介绍
  7. Towards Poisoning of Deep Learning Algorithms with Back-gradient Optimization
  8. 在家如何用手机赚钱,小编来为你一一解答!
  9. python白噪声检验_时间序列 平稳性检验 白噪声 峰度 偏度
  10. slides.com 导出PDF