package test;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap; public class DateTest { public static void main(String[] args) {
System.out.println(getYears("2016-01-01 00:00:00","2018-07-01 00:00:00"));
System.out.println(getMonths("2018-01-01 00:00:00","2018-07-01 00:00:00"));
System.out.println(getDays("2018-06-01 00:00:00","2018-07-01 00:00:00"));
} /***
* 获取两个时间段的年份/年第一天/年最后一天
* @param startTime
* @param endTime
* @return
*/
public static List<Map> getYears(String startTime, String endTime) {
List<Map> res=new ArrayList<Map>();
DateFormat dateFormat = new SimpleDateFormat("yyyy");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date start = dateFormat.parse(startTime);
Date end = dateFormat.parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.YEAR,1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
String year=dateFormat.format(tempStart.getTime());
String first=year+"-01-01 00:00:00";
String last=year+"-12-31 23:59:59";
Map<String,Object> map=new HashMap<String,Object>();
map.put("year", year);
map.put("first", dateFormat2.parse(first));
map.put("last", dateFormat2.parse(last));
res.add(map);
tempStart.add(Calendar.YEAR,1);
}
} catch (ParseException e) {
e.printStackTrace();
}
return res;
} /***
* 获取两个时间段的年份-月份/月第一天/月最后一天
* @param startTime
* @param endTime
* @return
*/
public static List<Map> getMonths(String startTime, String endTime) {
List<Map> res=new ArrayList<Map>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
DateFormat dateFormat3 = new SimpleDateFormat("yyyy-MM-dd");
try {
Date start = dateFormat.parse(startTime);
Date end = dateFormat.parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.MONTH,1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
String month=dateFormat.format(tempStart.getTime());
tempStart.set(Calendar.DAY_OF_MONTH, 1);
String first=dateFormat3.format(tempStart.getTime());
tempStart.set(Calendar.DAY_OF_MONTH, tempStart.getActualMaximum(Calendar.DAY_OF_MONTH));
Map<String,Object> map=new HashMap<String,Object>();
map.put("month", month);
map.put("first", dateFormat2.parse(first+" 00:00:00"));
map.put("last", dateFormat2.parse(first+" 23:59:59"));
res.add(map);
tempStart.add(Calendar.MONTH,1);
}
} catch (ParseException e) {
e.printStackTrace();
}
return res;
} /***
* 获取两个时间段的天数/开始时间/结束时间
* @param startTime
* @param endTime
* @return
*/
public static List<Map> getDays(String startTime, String endTime) {
// 返回的日期集合
List<Map> res=new ArrayList<Map>();
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
DateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date start = dateFormat.parse(startTime);
Date end = dateFormat.parse(endTime);
Calendar tempStart = Calendar.getInstance();
tempStart.setTime(start);
Calendar tempEnd = Calendar.getInstance();
tempEnd.setTime(end);
tempEnd.add(Calendar.DATE, +1);// 日期加1(包含结束)
while (tempStart.before(tempEnd)) {
String day=dateFormat.format(tempStart.getTime());
Map<String,Object> map=new HashMap<String,Object>();
map.put("day", day);
map.put("first", dateFormat2.parse(day+" 00:00:00"));
map.put("last", dateFormat2.parse(day+" 23:59:59"));
res.add(map);
tempStart.add(Calendar.DAY_OF_YEAR, 1);
}
} catch (ParseException e) {
e.printStackTrace();
}
return res;
}
}

Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)的更多相关文章

  1. java获取当前年、半年、季度、月、日、小时 开始结束时间等

    import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 获取 当前年.半年 ...

  2. java获取指定长度随机数(版本1)

    获取指定长度随机数,含大小写字母和数字 package org.sw; import java.util.Random; /** * 得到指定位数的随机数 * @author mengzw * @si ...

  3. Java获取指定时间的毫秒值的方法

    有以下两种方法获取指定时间的毫秒值: 1.Calendar类 先由getInstance获取Calendar对象,然后用clear方法将时间重置为(1970.1.1 00:00:00),接下来用set ...

  4. Java获取指定包名下的所有类的全类名的解决方案

        最近有个需求需要获取一个指定包下的所有类的全类名,因此特意写了个获取指定包下所有类的全类名的工具类.在此记录一下,方便后续查阅 一.思路         通过ClassLoader来查找指定包 ...

  5. Java 获取指定日期范围内的每个月,每季度,每一年

    /**     *根据时间范围获得月份集     * @return     */    public static List<String> getRangeSet(String beg ...

  6. Java获取当天、本周、本月、本季度、本年等 开始及结束时间

    package com.zhaochao.utils; import java.text.SimpleDateFormat; import java.util.Calendar; import jav ...

  7. java获取指定月份有几个星期x,获取指定月份跨了多少个星期

    例如获取2020年5月一共有多少个星期二,一共跨了多少个星期 public class MainTest { public static void main(String[] args) throws ...

  8. 13. Java 获取指定字符串出现的次数

    方式一 /** * @param args */ public static void main(String[] args) { String srcText = "Hello World ...

  9. JAVA获取指定日期是星期几

    /** * 获取指定日期是星期几<br> * * @param date * @return 指定日期是星期几 */ public static String getWeekOfDate( ...

随机推荐

  1. js截屏

    <html><head> <meta name="layout" content="main"> <meta http ...

  2. [SDOi2012]Longge的问题 (数论)

    Luogu2303 [SDOi2012]Longge的问题 题目 题目背景 SDOi2012 题目描述 Longge的数学成绩非常好,并且他非常乐于挑战高难度的数学问题.现在问题来了:给定一个整数N, ...

  3. (53)zabbix模板

    zabbix模板是做什么的? 平时工作中,我们需要监控web.mysql.redis.nginx这些服务器,众多服务器的业务都是一样的,所以我们只要事先创建好模板,然后所有服务器链接这个模板即可,如果 ...

  4. scrollTop如何实现click后页面过渡滚动到顶部

    用JS操作,body元素的scrollTop var getTop = document.getElementById("get-top"); var head = documen ...

  5. Juqyer:$.ajax()方法详解

    Jquery中的ajax方法参数总是记不住,这里记录一下. 最常用的属性是:url.data 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为S ...

  6. Spring Cloud Stream在同一通道根据消息内容分发不同的消费逻辑

    应用场景 有的时候,我们对于同一通道中的消息处理,会通过判断头信息或者消息内容来做一些差异化处理,比如:可能在消息头信息中带入消息版本号,然后通过if判断来执行不同的处理逻辑,其代码结构可能是这样的: ...

  7. 牛客网暑期ACM多校训练营(第五场) E room(最小费用最大流 , 最小权二分图匹配模板)

    链接: https://www.nowcoder.com/acm/contest/143/E 题意: 给定n个宿舍的新安排, 每个宿舍都有4个人, 问要至少有多少个人换位才能变成新安排. 可以建一个二 ...

  8. PAT Basic 1048

    1048 数字加密 本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余— ...

  9. 关于security的简单理解和应用

    2018年7月30日1.搜索引擎框架百度google Lucene 单机操作,就是一堆jar包中的api的使用,自己干预,如何创建索引库,删除索引库,更新索引库,高亮,自己调度APISolr 支持we ...

  10. mac下secureCRT 客户端 $redis-cli回车后没有反应的解决办法

    启动redis server后,SecureCRT进入redis-cli,输入不断在后面追加IP:Port显示设置当前的Session Options-->Terminal-->Emula ...