public class Test { public static java.util.Date dateAdd(java.util.Date mydate,String interval,int number) { java.util.Date datReturn=null; int intInterval=java.util.GregorianCalendar.DAY_OF_YEAR; if (interval.equals("Y")) intInterval=java.util.GregorianCalendar.YEAR; else if (interval.equals("M")) intInterval=java.util.GregorianCalendar.MONTH; else if (interval.equals("D")) intInterval=java.util.GregorianCalendar.DAY_OF_YEAR; else if (interval.equals("H")) intInterval=java.util.GregorianCalendar.HOUR_OF_DAY; else if (interval.equals("m")) intInterval=java.util.GregorianCalendar.MINUTE; else if (interval.equals("S")) intInterval=java.util.GregorianCalendar.SECOND;
/* name : betweenDays * function : get the days between the two days * parameter : * 1. sStartDate(String) The given Start date * 2. sEndDate(String) The given End date * output : * 1. (int) The days between the two days */ public static int betweenDays(String sStartDate,String sEndDate) { Date startDate = java.sql.Date.valueOf(sStartDate.replace('/','-')); Date endDate = java.sql.Date.valueOf(sEndDate.replace('/','-')); int iDays = (int) ((endDate.getTime() - startDate.getTime()) / 86400000L); return iDays; }不过这个要求我们的日期是yyyy/mm/dd格式的。这个是我自己用的,你可以参考后修改格式
Date day1=new Date("1994/11/1"); Date day2=new Date("1995/11/7"); long l1 = day1.getTime(); long l2 = day2.getTime(); long difference = l2 - l1; int day=(int)(difference/1000/60/60/24); System.out.println("day: " + day);
public static int dateDiff(String interval,java.util.Date date1, java.util.Datedate2) { int intReturn=-1000000000 ; if (date1==null || date2==null || interval==null) return intReturn ; try { java.util.Calendar cal1 = java.util.Calendar.getInstance(); java.util.Calendar cal2 = java.util.Calendar.getInstance();
// different date might have different offset cal1.setTime(date1); long ldate1 = date1.getTime() + cal1.get(java.util.Calendar.ZONE_OFFSET) + cal1.get(java.util.Calendar.DST_OFFSET);
cal2.setTime(date2); long ldate2 = date2.getTime() + cal2.get(java.util.Calendar.ZONE_OFFSET) + cal2.get(java.util.Calendar.DST_OFFSET);
// Use integer calculation, truncate the decimals int hr1 = (int)(ldate1/3600000); int hr2 = (int)(ldate2/3600000);
int days1 = (int)hr1/24; int days2 = (int)hr2/24;
int yearDiff = cal2.get(java.util.Calendar.YEAR) - cal1.get(java.util.Calendar.YEAR); int monthDiff = yearDiff * 12 + cal2.get(java.util.Calendar.MONTH) - cal1.get(java.util.Calendar.MONTH); int dateDiff = days2 - days1; int hourDiff = hr2 - hr1; int minuteDiff = (int)(ldate2/60000) - (int)(ldate1/60000); int secondDiff = (int)(ldate2/1000) - (int)(ldate1/1000);
if (interval.equals("Y")){ intReturn = yearDiff; } else if (interval.equals("M")){ intReturn = monthDiff; } else if (interval.equals("D")){ intReturn = dateDiff; } else if (interval.equals("H")){ intReturn = hourDiff; } else if (interval.equals("m")){ intReturn = minuteDiff; } else if (interval.equals("S")){ intReturn = secondDiff; } } catch (Exception ex) { } return intReturn; }
import java.util.Date; import java.text.*; /** * @author Administrator * * TODO 要更改此生成的类型注释的模板,请转至 * 窗口 - 首选项 - Java - 代码样式 - 代码模板 */ public class TestMinus { public static void main(String[] args) { Date t1 =null; Date t2 =null; SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmss"); try{ t1 = format.parse("20050927104653");} catch(Exception o){} try{ t2 = format.parse("20050927104652");} catch(Exception o){} long d= (t1.getTime()-t2.getTime())/(60*60*1000*24);
{
public static java.util.Date dateAdd(java.util.Date mydate,String interval,int number)
{
java.util.Date datReturn=null;
int intInterval=java.util.GregorianCalendar.DAY_OF_YEAR;
if (interval.equals("Y"))
intInterval=java.util.GregorianCalendar.YEAR;
else if (interval.equals("M"))
intInterval=java.util.GregorianCalendar.MONTH;
else if (interval.equals("D"))
intInterval=java.util.GregorianCalendar.DAY_OF_YEAR;
else if (interval.equals("H"))
intInterval=java.util.GregorianCalendar.HOUR_OF_DAY;
else if (interval.equals("m"))
intInterval=java.util.GregorianCalendar.MINUTE;
else if (interval.equals("S"))
intInterval=java.util.GregorianCalendar.SECOND;
java.util.GregorianCalendar cal=new java.util.GregorianCalendar();
try{
cal.setTime(mydate);
cal.add(intInterval,number);
datReturn=cal.getTime();
}
catch (Exception ex) {
}
return datReturn;
} public static void main(String[] args)
{
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date d=Test.dateAdd(new Date(),"D",3);
System.out.println(format.format(d)); }
}
* function : get the days between the two days
* parameter :
* 1. sStartDate(String) The given Start date
* 2. sEndDate(String) The given End date
* output :
* 1. (int) The days between the two days
*/
public static int betweenDays(String sStartDate,String sEndDate)
{
Date startDate = java.sql.Date.valueOf(sStartDate.replace('/','-'));
Date endDate = java.sql.Date.valueOf(sEndDate.replace('/','-')); int iDays = (int) ((endDate.getTime() - startDate.getTime()) / 86400000L);
return iDays;
}不过这个要求我们的日期是yyyy/mm/dd格式的。这个是我自己用的,你可以参考后修改格式
Date day2=new Date("1995/11/7");
long l1 = day1.getTime();
long l2 = day2.getTime();
long difference = l2 - l1;
int day=(int)(difference/1000/60/60/24);
System.out.println("day: " + day);
int intReturn=-1000000000 ;
if (date1==null || date2==null || interval==null) return intReturn ;
try {
java.util.Calendar cal1 = java.util.Calendar.getInstance();
java.util.Calendar cal2 = java.util.Calendar.getInstance();
// different date might have different offset
cal1.setTime(date1);
long ldate1 = date1.getTime() + cal1.get(java.util.Calendar.ZONE_OFFSET) + cal1.get(java.util.Calendar.DST_OFFSET);
cal2.setTime(date2);
long ldate2 = date2.getTime() + cal2.get(java.util.Calendar.ZONE_OFFSET) + cal2.get(java.util.Calendar.DST_OFFSET);
// Use integer calculation, truncate the decimals
int hr1 = (int)(ldate1/3600000);
int hr2 = (int)(ldate2/3600000);
int days1 = (int)hr1/24;
int days2 = (int)hr2/24;
int yearDiff = cal2.get(java.util.Calendar.YEAR) - cal1.get(java.util.Calendar.YEAR);
int monthDiff = yearDiff * 12 + cal2.get(java.util.Calendar.MONTH) - cal1.get(java.util.Calendar.MONTH);
int dateDiff = days2 - days1;
int hourDiff = hr2 - hr1;
int minuteDiff = (int)(ldate2/60000) - (int)(ldate1/60000);
int secondDiff = (int)(ldate2/1000) - (int)(ldate1/1000);
if (interval.equals("Y")){
intReturn = yearDiff;
}
else if (interval.equals("M")){
intReturn = monthDiff;
}
else if (interval.equals("D")){
intReturn = dateDiff;
}
else if (interval.equals("H")){
intReturn = hourDiff;
}
else if (interval.equals("m")){
intReturn = minuteDiff;
}
else if (interval.equals("S")){
intReturn = secondDiff;
}
}
catch (Exception ex) {
}
return intReturn;
}
import java.text.*;
/**
* @author Administrator
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class TestMinus { public static void main(String[] args) {
Date t1 =null;
Date t2 =null;
SimpleDateFormat format = new SimpleDateFormat("yyyyMMddhhmmss");
try{ t1 = format.parse("20050927104653");}
catch(Exception o){}
try{ t2 = format.parse("20050927104652");}
catch(Exception o){}
long d= (t1.getTime()-t2.getTime())/(60*60*1000*24);
System.out.println("d");
}
}自己改一改吧