根据一段时间区间,按月份拆分成多个时间段
package Test;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.junit.Test;
/**
* 根据一段时间区间,按月份拆分成多个时间段
* @author wjl
*
*
*/
public class SplitDateUtil {
/*
* 测试数据
* "2017/8/2","2017/8/2" √
* "2017/8/2","2017/8/20" ×
* "2017/8/2","2018/8/31" √
* "2017/8/2","2017/8/31" √
* "2017/8/2","2018/4/20" √
* "2017/8/22","2018/4/10" √
*/
@Test
public void demo(){
SplitDateUtil.getKeyValueForDate("2017/8/2","2017/8/2");
System.out.println("-------------------");
SplitDateUtil.getKeyValueForDate("2017/8/2","2017/8/20");
System.out.println("-------------------");
SplitDateUtil.getKeyValueForDate("2017/8/2","2018/8/31");
System.out.println("-------------------");
SplitDateUtil.getKeyValueForDate("2017/8/2","2018/4/20");
System.out.println("-------------------");
SplitDateUtil.getKeyValueForDate("2017/8/22","2018/4/10");
System.out.println("-------------------");
SplitDateUtil.getKeyValueForDate("2017/8/22","2016/4/10");
}
/**
* 根据一段时间区间,按月份拆分成多个时间段
* @param startDate 开始日期
* @param endDate 结束日期
* @return
*/
public static List<KeyValueForDate> getKeyValueForDate(String startDate,String endDate) {
List<KeyValueForDate> list = null;
try {
list = new ArrayList<KeyValueForDate>();
// 定义起始日期
Date d1 = new SimpleDateFormat("yyyy/MM/dd").parse(startDate);
// 定义结束日期
Date d2 = new SimpleDateFormat("yyyy/MM/dd").parse(endDate);
// 获取Calendar
Calendar calendar = Calendar.getInstance();
// 设置时间
calendar.setTime(d1);
// 设置日期为最大日期
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date d3 = new SimpleDateFormat("yyyy/MM/dd").parse(sdf.format(calendar.getTime()));
//System.out.println(sdf.format(d3));
Date temp1 = d1;
Date temp2 = d3;
//结束日期小于开始日期
if(d2.before(d1)){
System.out.println("请输入正确的结束日期!");
return null;
}
//结束日期大于开始日期
while (temp2.before(d2)) {
System.out.println(sdf.format(temp1)+"--------"+sdf.format(temp2));
//获取下一个月第一天
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DAY_OF_MONTH,1);
temp1 = new SimpleDateFormat("yyyy/MM/dd").parse(sdf.format(calendar.getTime())) ;
//获取下一个月份的最后一天
calendar.setTime(temp1);
calendar.add(Calendar.MONTH, 0);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
temp2 = new SimpleDateFormat("yyyy/MM/dd").parse(sdf.format(calendar.getTime())) ;
}
System.out.println(sdf.format(temp1)+"--------"+sdf.format(d2));
} catch (Exception e) {
return null;
}
return null;
}
}
class KeyValueForDate{
private String startDate;
private String endDate;
public String getStartDate() {
return startDate;
}
public void setStartDate(String startDate) {
this.startDate = startDate;
}
public String getEndDate() {
return endDate;
}
public void setEndDate(String endDate) {
this.endDate = endDate;
}
}
根据一段时间区间,按月份拆分成多个时间段相关推荐
- sql 查询一段时间区间内的值
1.sql 查询一段时间区间内的值 select to_char(to_date('2022-03-02','yyyy-mm-dd')+level-1,'yyyy-mm-dd') as day_val ...
- Python 获取(字典)字符串时间区间并转换类型,判断该时间段属否在时间范围
源码实例 : 获取(字典)字符串时间区间并转换类型 import datetime"ssh": {"username": "johnny", ...
- mysql怎么在一段时间区间内按照周分组,把属于一周的数据汇总在一起以及如何自定义周?
小编在写需求的时候发现有一个需求是给出一个开始.起止时间,需要你把每一周的数据汇总然后展现出来,比如给了前四周的日期,需要你自动汇总第一周到第四周的数据,奇葩的来了,正常来说周一到周日为一周,或者周日 ...
- Java 将一段时间以周、月、季分割
本文所有使用的时间戳均为毫秒级 得到的集合区间也是毫秒级的时间戳 按周分割时间 代码如下: @Test public void timeSplitByWeek() {// 1.开始时间 2019-06 ...
- php 间隔时间执行任务,PHP间隔一段时间执行代码的方法
PHP间隔一段时间执行代码的方法 发布于 2015-11-16 18:26:46 | 230 次阅读 | 评论: 0 | 来源: 网友投递 PHP开源脚本语言PHP(外文名: Hypertext Pr ...
- oracle查询大于某个日期的数据,查看某天(或某个时间区间)的数据,请别用between ... and ......
-- 最近经常看到有人在某段时间区间上喜欢用between ... and ... ,其实,可以直接地说:这种用法是错误的! -- 查看某一天的数据,或某一段时间内的数据,其实是一个左闭.右开的区间内 ...
- 算法会议室问题及计算重叠时间区间段
算法会议室问题及计算重叠时间区间段 1. 会议室问题 2. 计算重叠时间区间段 1. 会议室问题 package com.zrj.algorithm.test;import cn.hutool.cor ...
- 专访黄勇:Java在未来的很长一段时间仍是主流
专访黄勇:Java在未来的很长一段时间仍是主流 发表于2015-09-06 13:18| 11640次阅读| 来源CSDN| 70 条评论| 作者钱曙光 社区文旦专访黄勇架构框架JavaJava ...
- 一段时间以来的SEO优化结果
其实也没有刻意去做SEO优化,只是最近的博客写得比较勤力一点,而且也确确实实在做一些SEO的事情,但坦白讲,以我个人的经验来说,我发现现在很多网上的SEO都是在忽略的,骗搜索引擎的,我觉得这样是没有好 ...
最新文章
- 人工智能军事对抗技术发展趋势
- 比特币现金仍然是一个比较好的投资
- ITK:过滤图像而没有复制其数据
- 认证(登录)功能需求分析
- Android之在ubuntu上常用的am、pm命令的总结
- [Unity] ACT 战斗系统学习 5:使用 ScriptableObject 制作角色属性 1
- lte 在网络覆盖方面应该注意哪些问题_TD-LTE网络深度覆盖三个受限因素及四大解决策略...
- Bailian4014 字符串加密【密码】
- 设计模式(9)----- 创建型模式-----工厂设计模式(抽象工厂模式)
- 限制root远程登录
- 通达OA执着创新 只为让梦想照进现实
- Android中微信抢红包插件原理解析和开发实现
- 想用html5改写妄撮
- 网络计算机怎么使用,如何让电脑使用ipv6地址?一文了解清楚
- 详细解读 SQL 窗口函数
- vue2和vue3关闭语法检查
- android QQ分享、QQ空间分享
- jpi多表联查_使用mybatis进行多表联查
- 74HC138芯片简析
- MSP430单片机 MTH01-SPI 温湿度传感器 程序
热门文章
- C, C++, Network编程经典书籍
- 秋招在即,你准备好了吗?BAT算法工程师面试经验分享。
- Springboot企业出纳系统的设计与实现7k9je计算机毕业设计-课程设计-期末作业-毕设程序代做
- vmware安装打印机(win10)
- 从零开始学R(三)——基本计算
- 智佩店装完成千万级天使轮融资,深耕连锁店装
- Windows8.1设置默认输入法为英文
- (八)JVM成神路之GC分区篇:G1、ZGC、ShenandoahGC高性能收集器深入剖析
- 怎样把CAD图纸的背景颜色修改成白色?
- 人脸实名认证实现方案(微信H5百度云篇)