Java获取指定时间段的年份(开始、结束时间)、月份(开始、结束时间)、天数(开始、结束时间)
JAVA 获取 时间 指定 开始 结束 月份 天数
2023-09-11 14:14:48 时间
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 并发工具包 java.util.concurrent 用户指南
- Java通过属性名获取Object对象属性值
- Java Scanner 类,获取用户输入的值
- Java 目录操作二(获取文件的上级目录、获取目录最后修改时间、打印目录结构、遍历指定目录下的所有目录)
- java基础—文件的切割与合并
- Java核心技术卷I基础知识3.5.6 关系和boolean运算符
- 【Java】Mybatis-Plus获取不到数据库表中的部分字段(带下划线_的字段)
- 【Java】+反射1+获取属性/成员变量 的名称及类型
- 第90节:Java中的Linux基础
- Java思维理清思路
- 第五节:详细讲解Java中的接口与继承
- 【FAQ】【JAVA UI】HarmonyOS 如何获取uid和pid
- java提取字符串数字,Java获取字符串中的数字
- Java new Date() 获取的时间不正确 【已解决】
- java获取时间戳的方法
- Java学习-059-Jsoup爬虫获取中国所有的三级行政区划数据(四),生成相应的 JSON 数据并输出
- java中获取比毫秒更为精确的时间
- JAVA中获取当前系统时间
- Java代码获取当前时间的时间戳(13位和10位)
- 华为OD机试 -相同数字的积木游戏1(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 【LeetCode-面试算法经典-Java实现】【05-Longest Palindromic Substring(最大回文字符串)】
- Java 获取时间
- Java 7之多线程- Semaphore--转载
- java获取异步线程执行结果示例,也是Executors框架的基本原理
- Java 获取类名