java 将一段时间分割为两个连续的时间

eg:

20180901  -- 20180930

->>>>

20180901-20180915  && 20180916-20180930

 

/*** 获取两日期相差天数** @param beginDateStr 时间起点* @param endDateStr 时间终点* @param TimeType 时间类型 yyyy-MM-dd || yyyyMMdd || ....* @return long /天数*/public static long getDaySub(String beginDateStr, String endDateStr, String TimeType) {long day = 0;SimpleDateFormat format;try {format = new SimpleDateFormat(TimeType);} catch (Exception e) {System.out.println("getDaySub——>TimeType:"+TimeType);format = new SimpleDateFormat("yyyy-MM-dd");}Date beginDate;Date endDate;try {beginDate = format.parse(beginDateStr);endDate = format.parse(endDateStr);day = (endDate.getTime() - beginDate.getTime()) / (24 * 60 * 60 * 1000);} catch (Exception e) {System.out.println("获取两时间差值出现异常 begin:" + beginDateStr + "  end:" + endDateStr);}if (day < 0) {day = day * -1;}return day;}/*** 将一段时间分割为两个连续的时间段** @param dp 时间集合 <开始时间,结束时间>* @param TimeType 时间类型  yyyy-MM-dd || yyyyMMdd || ....* @return 1.两个相连的时间集合 2.null*/public static List<Pair<String, String>> cutDatePair(Pair<String, String> dp, String TimeType) {List<Pair<String, String>> lst = new ArrayList<>();long ts = getDaySub(dp.left(), dp.right(), TimeType);if (ts < 2) {return null;}int day = (int) ts / 2;SimpleDateFormat format;try {format = new SimpleDateFormat(TimeType);} catch (Exception e) {format = new SimpleDateFormat("yyyy-MM-dd");}Date beginDate;try {beginDate = format.parse(dp.left());Calendar beginDataEnd = Calendar.getInstance();beginDataEnd.setTime(beginDate);beginDataEnd.add(Calendar.DAY_OF_YEAR, day);//"开始"的结束时间
Calendar endDataBegin = Calendar.getInstance();endDataBegin.setTime(beginDate);endDataBegin.add(Calendar.DAY_OF_YEAR, day + 1);//"结束"的开始时间
lst.add(new Pair<>(dp.left(), format.format(beginDataEnd.getTime())));lst.add(new Pair<>(format.format(endDataBegin.getTime()), dp.right()));System.out.println("拆分时间 " + dp.left() + "-" + dp.right() + "  -->>  " + dp.left() + "-" + format.format(beginDataEnd.getTime()) +"   and " + format.format(endDataBegin.getTime()) + "-" + dp.right());} catch (Exception e) {}if(lst.isEmpty() || lst.size()!=2){return null;}return lst;}

 

转载于:https://www.cnblogs.com/yishilin/p/9728937.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/451138.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 中 FtpClient 实现 FTP 文件上传、下载

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 源代码大部分是网上找的&#xff0c;查来查去&#xff0c;找到几个可以用的例子&#xff0c;改来改去&#xff0c;揉合成现在这个样子。…

MongDB集合文档操作符

一、MongoDB - 连接1.启动 MongoDB 服务只需要在 MongoDB 安装目录的 bin 目录下执行 mongod 即可执行启动操作后&#xff0c;mongodb 在输出一些必要信息后不会输出任何信息&#xff0c;之后就等待连接的建立&#xff0c;当连接被建立后&#xff0c;就会开始打印日志信息。可以…

LIMIT M,N分页性能优化方案

利用子查询优化 说明: MySQL 并不是跳过 offset 行&#xff0c;而是取 offsetN 行&#xff0c;然后返回放弃前 offset 行&#xff0c;返回 N 行&#xff0c;那当 offset 特别大的时候&#xff0c;此时使用limit m,n效率就非常的低下。想要提升性能要么控制返回的总页数&#…

PHP获取文件后缀名

PHP获取文件后缀名是PHP学习者常见的一种操作&#xff0c;无论是在面试过程中还是PHP新手自学中。PHP获取文件后缀名都是很普遍的需要掌握的一个知识点。下面我们就给大家总结介绍PHP获取文件扩展名也就是后缀名的两种方法&#xff01;一、通过pathinfo首先大家应该知道pathinf…

Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、客户端工程 jar 包 &#xff1a; 二、1. 服务端&#xff1a;( new 一个web service project ) package com;import javax.jws.…

最佳Linux服务器发行版

一款Linux发行版就如同一件衣服一样&#xff0c;适合自己的才是最好的选择。 对大型企业而言&#xff0c;当然首选Red Hat Enterprise Linux&#xff08;RHEL&#xff09;。Red Hat有完善的技术支持服务&#xff0c;而且在我们周围&#xff0c;非常容易找到持有Red Hat认证的技…

在线代码编辑器 Codemirror 的轻量级 React 组件

代码编辑器 CodeMirror 的轻量级 React 组件 demo uiw-react.github.io/react-codem… 特性: ? 自动根据 mode 配置加载 mode 文件。 ? 快速简单的配置 API。 安装 npm install uiw/react-codemirror --save 复制代码使用 import CodeMirror from uiw/react-codemirror; impo…

「机械」4大传动方式优劣对比:机械、电气、气压、液压

传动方式有很多种。目前应用比较多的四大类传动方式&#xff08;机械、电气、液压和气压&#xff09;中&#xff0c;没有一种动力传动是十全十美的。今天跟大家分享4种传动方式的优劣对比。 一. 机械传动 1. 齿轮传动 齿轮传动是机械传动中应用最广的一种传动形式。它的传动比较…

一次性获取多个oracle序列的值,实现关联表多数据的批量insert

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 业务 要求批量导入不小于10W条数据到 user 表&#xff0c;但是user表在 insert 每条数据的同时要 insert 一条对应数据到 customer表…

开始使用C++11的9个理由

如果你的代码工作正常并且表现良好&#xff0c;你可能会想知道为什么还要使用C 11。当然了&#xff0c;使用用最新的技术感觉很好&#xff0c;但是事实上它是否值得呢&#xff1f; 在我看来&#xff0c;答案毫无疑问是肯定的。我在下面给出了9个理由&#xff0c;它们分为两类&a…

MySQL批量update数据(更新的数据值不同)

(一)纯mysql: ​UPDATE my_table SETstatus CASE idWHEN 1 THEN 3WHEN 2 THEN 4WHEN 3 THEN 5END,title CASE idWHEN 1 THEN New Title 1WHEN 2 THEN New Title 2WHEN 3 THEN New Title 3END WHERE id IN (1,2,3) (二)mybatis写法 1:foreach <update id"batchUpd…

webpack+vue-cli 中proxyTable配置接口地址代理

在项目开发的时候&#xff0c;接口联调的时候一般都是同域名下&#xff0c;且不存在跨域的情况下进行接口联调&#xff0c;但是当我们现在使用vue-cli进行项目打包的时候&#xff0c;我们在本地启动服务器后&#xff0c;比如本地开发服务下是 http://localhost:8080 这样的访问…

AMQP 协议介绍

RabbitMQ 是遵从AMQP 协议的&#xff0c; 换句话说&#xff0c; RabbitMQ 就是AMQP 协议的Erlang 的实现(当然RabbitMQ 还支持STOMP2 、MQTT3 等协议) 0 AMQP 的模型架构和RabbitMQ 的模型架构是一样的&#xff0c;生产者将消息发送给交换器&#xff0c;交换器和队列绑定。当生…

关联表多数据的批量insert (批量导入,测试19W条数据用时46秒)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、业务需求 &#xff1a;作多个批量导入 &#xff0c;根据业务不同&#xff0c;每条数据导入前作各种验证&#xff0c; 导入后提示验证…

Java已死?九百万程序员说不

Java没死&#xff0c;事实上它拥有足够的能量让你的应用跑起来。那些对Java吹毛求疵人频繁地聚焦在一些小众问题上&#xff0c;总是和其他技术或者语言做些不公平的对比&#xff0c;这些语言并没有像Java一样得到广泛应用及长远的历史。 现在的小孩都能学Java&#xff0c;它在…

Linux SSH远程管理故障如何排查?

SSH远程管理故障排查方案&#xff1a;1、检测两个机器是否畅通两个机器之间是否畅通&#xff0c;查看物理链路是否有问题(网线网卡、IP是否正确)第1步&#xff1a;物理链路是否畅通&#xff0c;比喻为“高速公路是否畅通”ping 排查客户端到服务端的线路问题&#xff0c;ping是…

CSS中position的absolute和relative用法

static: HTML元素的默认定位方式absolute: 将对象从文档流中拖出&#xff0c;使用left&#xff0c;right&#xff0c;top&#xff0c;bottom等属性进行绝对定位。而其层叠通过z-index属性定义。绝对定位的元素的位置相对于最近的已定位父元素&#xff0c;如果元素没有已定位的父…

Spring HttpMessageNotReadableException异常

&#xff08;一&#xff09;现象 我们在进行服务间的rpc调用时&#xff0c;可能会遇到org.springframework.http.converter.HttpMessageNotReadableException异常。 其具体报错如下&#xff1a; {"timestamp": 1456043810789,"status": 400,"error…

解决 -- java 调用webservice 服务端收到参数为null

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 我的客户端和服务端都写的很简单&#xff0c;只是调用服务的时候&#xff0c; 服务端得不到参数&#xff0c;后来发现只改一个地方就可…