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;
}
}
分享到:
相关推荐
通过本文,我们将详细了解如何计算特定月份的最大天数、实现`Calendar`与`Date`之间的转换、格式化日期时间、计算一年中的星期数、使用`add()`和`roll()`方法调整日期,以及计算两个日期间的间隔天数。 #### 1. ...
在实际应用中,日期函数的使用非常广泛,例如计算两个日期间的工作天数、获取当前月份的第一天和最后一天、计算日期所在的周数、弹出选择周的对话框等。 1. 计算两个日期间的工作天数 在实际应用中,我们需要计算...
- **功能**:计算两个日期间的有效工作日数量。 - **应用场景**:用于计算项目预计完成所需的工时。 ##### NOW - 返回当前日期和时间的系列数 - **功能**:返回当前系统的日期和时间。 - **应用场景**:用于标记...
学生需要将这些休息日分别标记出来,形成两个不同的集合。这个过程有助于学生理解集合的元素和集合间的关系。 2. **日历中的数学规律**:课程引导学生观察9月份的日历,寻找日期间的规律。例如,找出每个月的天数,...
2. **And运算符**:在逻辑表达式中,如果两个表达式都为真,则结果为真,否则为假。 3. **Array函数**:创建一个 Variant 类型的数组,可以包含任意数量和类型的元素。 4. **Asc函数**:将字符转换为其对应的ANSI...
- 使用`DATEDIF`函数,准确计算两个日期间的天数间隔。 49. **Excel文件修复** - 使用Excel内置的“打开并修复”功能或第三方恢复软件,尝试修复损坏的文件。 50. **数据追加至总表** - 利用Power Query或VBA宏...
3. **MONTHS_BETWEEN**: 计算两个日期间的月份数。 4. **NEXT_DAY**: 返回指定日期之后的下一个特定星期的日期。 5. **ROUND**: 舍入到最近的日期。 6. **TRUNC**: 截断日期到特定的时间单位。 7. **GREATEST**: ...
标题中的“上海市2018年共享单车数据wgs84坐标系8月份到9月份共享单车数据-8.zip”表明这是一个关于共享单车使用情况的数据集,涵盖了2018年8月至9月两个月的时间段,主要针对上海地区。这个数据集是以WGS84坐标系为...
NETWORKDAYS计算两个日期间的完整工作日;NOW返回当前日期和时间;TIMEVALUE将文本时间转换为序列号;TODAY返回当前日期;WEEKDAY和WORKDAY分别返回星期和工作日的序列号。 工程函数涉及复杂的数学计算,如贝塞尔...
* NETWORKDAYS:返回两个日期间的全部工作日数。 * NOW:返回当前日期和时间的序列号。 * SECOND:将序列号转换为秒。 * TIME:返回特定时间的序列号。 * TIMEVALUE:将文本格式的时间转换为序列号。 * TODAY:返回...
5. **首批商铺完美售罄活动**(20xx年4月20日至20xx年五一期间) - **活动目的**:推动7号楼的销售,但由于工期延期,活动效果受限。 - **价格调整**:首次对前期房源的价格进行了调整,8号楼每平方米上调20元。 ...
- `MONTHS_BETWEEN(date1, date2)`:返回两个日期间的月份数。 - `NEXT_DAY(date, day)`:返回指定日期后下一个特定星期几的日期。 - `ROUND(date[, format])`:按指定格式四舍五入日期。 - `TRUNC(date[, ...
日期函数中,`ADD_MONTHS(date, months)` 添加或减去指定月份数,`LAST_DAY(date)` 返回该月的最后一天,`MONTHS_BETWEEN(date1, date2)` 计算两个日期间的月份数,`NEXT_DAY(date, day)` 返回给定日期之后的指定...
计算两个日期间的工作日数量。 **11. NOW** 返回当前日期和时间。 **12. SECOND** 提取时间的秒数部分。 **13. TIME** 返回一个时间值,表示特定的小时数、分钟数和秒数。 **14. TIMEVALUE** 将文本字符串...
克服了6月份变频器IGCT问题,并自行解决了装矿保护、投料点靠前、箕斗卸矿落矿严重等问题,共计进行了50余项技术革新和技术难题的解决。 - **-600运输大巷**:面对电机车故障率高、维修硐室未形成等问题,车间采取...