public class DateUtils {
public int getMonth(Date s,Date e){
if(s.after(e)){
Date t=s;
s=e;
e=t;
}
Calendar start = Calendar.getInstance();
start.setTime(s);
Calendar end = Calendar.getInstance();
end.setTime(e);
Calendar temp=Calendar.getInstance();
temp.setTime(e);
temp.add(Calendar.DATE,1);
int y=end.get(Calendar.YEAR)-start.get(Calendar.YEAR);
int m=end.get(Calendar.MONTH)-start.get(Calendar.MONTH);
if((start.get(Calendar.DATE)==1) && (temp.get(Calendar.DATE)==1)){//前后都不破月
return y*12+m+1;
}
else if((start.get(Calendar.DATE)!=1) && (temp.get(Calendar.DATE)==1)){//前破月后不破月
return y*12+m;
}
else if((start.get(Calendar.DATE)==1) && (temp.get(Calendar.DATE)!=1)){//前不破月后破月
return y*12+m;
}
else {//前破月后破月
return (y*12+m-1)<0?0:(y*12+m-1);
}
}
public int getDay(Date s,Date e){
if(s.after(e)){
Date t=s;
s=e;
e=t;
}
Calendar start = Calendar.getInstance();
start.setTime(s);
Calendar end = Calendar.getInstance();
end.setTime(e);
Calendar temp=Calendar.getInstance();
temp.setTime(e);
temp.add(Calendar.DATE,1);
if((start.get(Calendar.DATE)==1) && (temp.get(Calendar.DATE)==1)){//前后都不破月
return 0;
}
else if((start.get(Calendar.DATE)!=1) && (temp.get(Calendar.DATE)==1)){//前破月后不破月
return getDayP(start);
}
else if((start.get(Calendar.DATE)==1) && (temp.get(Calendar.DATE)!=1)){//前不破月后破月
return end.get(Calendar.DATE);
}
else {//前破月后破月
if(start.get(Calendar.MONTH)==end.get(Calendar.MONTH) && start.get(Calendar.YEAR)==end.get(Calendar.YEAR)){
return end.get(Calendar.DATE)-start.get(Calendar.DATE)+1;
}
else{
return getDayP(start)+end.get(Calendar.DATE);
}
}
}
public int getDayP(Calendar s){
int d;
if(s.get(Calendar.MONTH)==1 && s.get(Calendar.YEAR)%4==0 && s.get(Calendar.YEAR)%100!= 0){//闰年2月
d=29;
}
else{
Map<Integer,Integer> m = new HashMap<Integer, Integer>();
m.clear();
m.put(1, 31);
m.put(3, 31);
m.put(5, 31);
m.put(7, 31);
m.put(8, 31);
m.put(10, 31);
m.put(12, 31);
m.put(4, 30);
m.put(6, 30);
m.put(9, 30);
m.put(11, 30);
m.put(2, 28);
d=m.get(s.get(Calendar.MONTH)+1);
}
return d-s.get(Calendar.DATE)+1;
}
}
分享到:
相关推荐
在Java编程语言中,计算两个日期之间相差的月数是一个常见的任务,这通常涉及到日期处理和时间计算。本文将深入探讨如何使用Java实现这个功能,包括标准库中的API以及一些高级方法。 首先,Java 8引入了`java.time`...
计算两个时间之间的年数、月数、天数、时、分、秒,计算两个时间之间的年数、月数、天数、时、分、秒
根据给定文件的信息,我们可以提炼出以下...这个函数可以帮助开发者快速计算两个日期之间的天数差,适用于各种需要处理日期计算的场景。同时,我们还扩展了一些与日期操作相关的基础知识,帮助加深对日期处理的理解。
DB2 计算相差天数(时间),打个比方你要计算2013-10-20到2014-03-01的天数
在实际应用中,我们经常需要知道两个日期之间相差的具体年数、月数和天数,例如在计算年龄、工作年限、合同有效期等方面。SQL提供了多种方法来处理日期,但直接计算两个日期之间的精确年月日差距并不是一个内置的...
MySQL提供了丰富的日期和时间函数,使得我们可以方便地计算两个日期之间的差异,无论是天数、月数还是年数。本篇文章将深入探讨如何利用MySQL的`TIMESTAMPDIFF`函数以及相关日期函数来实现这一目标。 `...
"计算两天之间的月数"这个主题涉及到的是如何在编程环境中确定两个日期之间相差的月份数。这个过程并不像计算天数那么简单,因为月份的长度不同,且可能涉及到闰年的情况。以下将详细介绍计算两天之间月数的方法。 ...
在编程领域,尤其是在C#环境下,...以上就是关于“计算两个日期间的年月日差”的详细解释,希望对你在处理日期计算时有所帮助。在实际应用中,记得根据业务需求进行适当的调整和优化,确保计算结果的准确性和可靠性。
在PHP编程中,有时我们需要计算两个日期之间的间隔,例如计算两个日期相差的年数、月数、周数和天数。这个任务可以通过自定义函数来完成。以下是一个名为`format`的函数,它接受两个日期字符串作为参数,并返回一个...
- 在财务管理中,经常需要计算两个日期之间的天数,例如计算发票日期到付款日期的间隔,或者计算项目开始和结束日期的持续时间。 - 可以使用`IF`函数结合日期间隔来设置条件,比如判断是否超过付款期限。 4. **...
尽管Python的标准库如`datetime`, `calendar`, 和 `dateutil`提供了丰富的日期处理功能,但它们并未直接提供计算两个日期相差月数的方法。本篇文章将深入探讨如何实现这个功能,并提供一个自定义的解决方案。 首先...
通过计算两个时间戳之间的差值,我们得到了两个日期之间相差的总秒数。 随后,使用了`abs()`函数来确保时间差为正数。接着,通过整除和取余操作分别计算出相差的年数、月数和天数。计算年份时,我们首先计算出总秒...
16、计算传入的两个日期之间相差的天数 17、根据传入的年月返回该月的第一天 18、根据传入的年月返回该月最后的一天 19、获得当前月份的第一天 20、获得当前月份的最后一天 21、获取上月的第一天 22、获取上月的最后...
在Java编程中,计算两个日期之间的差异是一项常见的任务,它涉及到日期和时间的处理。`DateUtils.java` 文件很可能是包含一个工具类,用于帮助我们完成这个任务。在这个类中,可能包含了各种方法来计算两个`java....
在PHP中计算两个日期之间的差异并返回相差的年、月、日是一项常见的任务。本知识点详细介绍了如何利用PHP内置的时间处理函数来实现这一功能,并提供了一个具体的函数实现例子。 首先,我们需要了解PHP中的几个重要...
7. **fima_days_and_months_and_years**:这是一个用来计算两个日期之间相差的天数、月数和年数的函数,适用于需要精确日期间隔的场景。 8. **BKK_GET_MONTH_LASTDAY**:这个函数返回给定日期所在月份的最后一天,...
2. 计算日期间相差的年月日:可能涉及精确到日的计算,如计算两个日期之间的完整月份和剩余天数。 通过学习这个工作簿,你将能够更好地掌握DATEDIF函数的用法,提高Excel的数据处理能力。记住,理解DATEDIF函数不仅...