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. POJ 2255 Tree Recovery——二叉树的前序遍历、后序遍历、中序遍历规则(递归)

    1.前序遍历的规则:(根左右) (1)访问根节点 (2)前序遍历左子树 (3)前序遍历右子树 对于图中二叉树,前序遍历结果:ABDECF 2.中序遍历的规则:(左根右) (1)中序遍历左子树 (2)访 ...

  2. 【数论 dp】2048

    考场上一个DFS优化乱加就对了一个无解的点 题目描述 给定一个长度为 n 的数列,在这个数列中选取一个子序列使得这个子序列中的数能合出2048 对于合并操作,可以选择这个序列中的任意两个数进行合并,当 ...

  3. CSS 文本下划线 text-decoration

      定义和用法 text-decoration 属性规定添加到文本的修饰. 可能的值 值 描述 none 默认.定义标准的文本. underline 定义文本下的一条线. overline 定义文本上 ...

  4. Shell脚本的条件测试与比较

    Shell脚本的条件测试与比较 一.shell脚本的条件测试 通常,在bash的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结构执行不同的操作,有时也会与if等条件语句相结合,来完成测试 ...

  5. 浮动的label

    在web项目中,有一个很重的模块就是登陆/注册模块,这个模块的主体部分就是一个form表单,这个form表单包含两个重要input组(用户名/密码),每个input组都包含label和input,而关 ...

  6. linux系统,python3.7环境安装talib过程

    获取源码wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz 解压进入目录tar -zxvf ta-lib-0. ...

  7. 避免使用aireplay-ng指令时出现AP通道不对的方法

    本方法搜集网络:具体使用为在调试网卡为监听模式,使用airodump-ng指令扫描wifi后,需要先执行"airmon-ng stop wlan0"指令,然后再进行一系列抓包等操作 ...

  8. django第9天(多表操作)

    django第9天 models类 class Book(Model): id = AutoField(primary_key=True) name = CharField(max_length=20 ...

  9. python爬虫入门七:pymysql库

    我们使用python爬取得到的数据,有时候会数据量特别大,需要存入数据库. 需要注意的是,MySQL是一种关系型数据库管理系统,利用MySQL可以对数据库进行操作,而MySQL并不是一个数据库. 而p ...

  10. Luogu 2627 修建草坪 (动态规划Dp + 单调队列优化)

    题意: 已知一个序列 { a [ i ] } ,求取出从中若干不大于 KK 的区间,求这些区间和的最大值. 细节: 没有细节???感觉没有??? 分析: 听说有两种方法!!! 好吧实际上是等价的只是看 ...