求两个日期间的月份/日/小时集合

本文介绍了一种用于计算两个日期区间内的月份、日、小时集合的方法,通过使用Java编程语言实现,包括解析日期字符串、生成日期列表等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.LinkedList;
import java.util.List;

public class DateUtils {
public static void main(String[] args) throws ParseException {
System.out.println("=====================求两个日期间的月份集合=======================");
List<String> month_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",1);
for(int i=0;i<month_lists.size();i++){
System.out.println(month_lists.get(i));
}
System.out.println("=====================求两个日期间的日集合=======================");
List<String> day_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",2);
for(int i=0;i<day_lists.size();i++){
System.out.println(day_lists.get(i));
}
System.out.println("=====================求两个日期间的小时集合=======================");
List<String> hour_lists = getBetweenTwoDateList("2011-12-01 00:00:00","2012-04-11 03:03:03",3);
for(int i=0;i<hour_lists.size();i++){
System.out.println(hour_lists.get(i));
}

}
/*
* 求两个日期间的月份/日/小时集合
* params:startDateStr 开始时间
* @param endDateStr 结束时间
* @param type 时间粒度 1:月 2:日 3:小时
* @return List
*/
public static List<String> getBetweenTwoDateList(String startDateStr,String endDateStr,int type) throws ParseException{
List<String> list = new LinkedList<String>();
DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = simpleDateFormat.parse(startDateStr); // 开始日期
Date endDate = simpleDateFormat.parse(endDateStr); //结束日期
Calendar startCalendar = Calendar.getInstance();
Calendar endCalendar = Calendar.getInstance();
startCalendar.setTime(startDate);
endCalendar.setTime(endDate);
String result = null;
while (startCalendar.compareTo(endCalendar) <= 0) {
startDate = startCalendar.getTime();
switch(type){
case 1:
result = new SimpleDateFormat("yyyy-MM").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个月直到等于结束日期为止
startCalendar.add(Calendar.MONTH, 1);
break;
case 2:
result = new SimpleDateFormat("yyyy-MM-dd").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个天直到等于结束日期为止
startCalendar.add(Calendar.DAY_OF_MONTH, 1);
break;
default:
result = new SimpleDateFormat("yyyy-MM-dd HH").format(startDate);
result = result.substring(0, result.length());
list.add(result);
// 开始日期加一个月直到等于结束日期为止
startCalendar.add(Calendar.HOUR, 1);
break;
}
}
return list;
}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值