求2个时间相减得到年月日时分的问题?+急急急
我想将2个日期相减分别得到年 月 日 时 分
得到年没问题,关键是下面的得到月,天,时,分 出现问题了
//年
FALSE_YEAR=((HR_DAYTO.getTime()-HR_DAYFROM.getTime())/(24*60*60*1000))/365;
//月
false_month=((HR_DAYTO.getTime()-HR_DAYFROM.getTime())/(24*60*60*1000))/30;
//日
false_day=(HR_DAYTO.getTime()-HR_DAYFROM.getTime())/(24*60*60*1000);
//时
false_hour=(HR_DAYTO.getTime()-HR_DAYFROM.getTime())%(24*60*60*1000)/3600;
// 分
false_min=(HR_DAYTO.getTime()-HR_DAYFROM.getTime())%(60*60*1000)/60;
如果当天数大于30 天就出现问题了,如 天数我35天,正确的结果为 1个月35天才对。我是将2个日期相减,得到的年月日,时分,是分开的,不是合在一起的,要将相减得到的日期,拆成年月日时分,
效果为:如 2013-5-5 ,2012-4-5 那么显示的效果为
年:1
月:1
日:0 , 当然的我的问题主要是当天数大于30天后,要自动的进位,月份也是如此,不知道要怎么弄,这是在java 中不是在数据库中。。。。求高手
[解决办法]
请查看java.util.Calendar
[解决办法]
写一个不太准确的,
_YEAR = (24*60*60*1000) * 365; //计算一年的时间转换成与getTime的相同,
_MONTH = (24*60*60*1000) * 30;
_DATE = 24*60*60*1000;
相差几年 = (date1.getTime() - date2.getTime()) / _YEAR
相差几月 = (date1.getTime() - date2.getTime() - 相差几年 * _YEAR) / _MONTH
下面的类似了
[解决办法]
或者这样,
先判断哪个日期大,
将其转换为,比如:date1 =2013-04-18,转换为 year1 =2013, month1 = 4, d1 = 18
date2 = 2012-07-30,转换为 year2 = 2012,month2 = 7,d2 = 30
年之间的差距 y = (month1 - month2)>0 ? (year1 - year2) : (year1 - year2) - 1;
月之间的差距 m = (d1-d2)>0 ? ((month1 - month2)>0 ?(month1 - month2) : (month1 - month2 + 12)) : ((year1 - year2) * 12 + month1 - month2) - 1;
天之间的差距 d = (d1-d2)>0 ? (d1-d2) : (d1-d2) + 计算year1上个月的天数(这个好计算的)
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
long s=sdf.parse("2011-08-15").getTime()-sdf.parse("2010-04-33").getTime();
System.out.println(sdf.format(new Date(s)));//1971-04-15 可以减去1970-01-01
Calendar c=Calendar.getInstance();
c.setTime(new Date(s));
System.out.println(c.get(Calendar.YEAR)-1970) ;
System.out.println(c.get(Calendar.MONTH)) ;
System.out.println(c.get(Calendar.DAY_OF_MONTH)-1) ;