java日期相減
① java中如何實現日期相減
求兩個日期之間相隔的天數:
Java代碼示例:
java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");
java.util.Date beginDate= format.parse("2007-12-24");
java.util.Date endDate= format.parse("2007-12-25");
long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
System.out.println("相隔的天數="+day);
② java實現兩個日期相減得到中間的年份和月份
public class DateSimple {
public static void main(String[] args) {
String startTime = "2012-07-01";
String endTime = "2014-07-31";
String[] arg1 = startTime.split("-");
String[] arg2 = endTime.split("-");
int year1 = Integer.valueOf(arg1[0]);
int year2 = Integer.valueOf(arg2[0]);
int month1 = Integer.valueOf(arg1[1]);
int month2 = Integer.valueOf(arg2[1]);
for (int i = year1; i <= year2; i++) {
int monthCount = 12;
int monthStart = 1;
if (i == year1) {
monthStart = month1;
monthCount = 12-monthStart+1;
} else if (i == year2) {
monthCount = month2;
}
for(int j = 0; j < monthCount; j++){
int temp = monthStart+j;
if(temp >=10){
System.out.println(i+"-"+(monthStart+j));
}else{
System.out.println(i+"-0"+(monthStart+j));
}
}
}
}
}
2012-07
2012-08
2012-09
2012-10
2012-11
2012-12
2013-01
2013-02
2013-03
2013-04
2013-05
2013-06
2013-07
2013-08
2013-09
2013-10
2013-11
2013-12
2014-01
2014-02
2014-03
2014-04
2014-05
2014-06
2014-07
③ java 兩個日期相減的怎麼做
對已日期相減,最高效的做法就是將二者都轉換成毫秒,相減之後再根據你的需求進行單位轉換,比如你想顯示相差的秒數,就除以1000,以此類推,翠花,上代碼:
/*隨便選兩個時間*/
Stringd1="2015-04-17";
Stringd2="2015-06-17";
/*先轉成毫秒並求差*/
SimpleDateFormatsdf=newSimpleDateFormat("yyyy-MM-dd");
longm=sdf.parse(d2).getTime()-sdf.parse(d1).getTime();
/*根據你的需求進行單位轉換*/
System.out.println("相差毫秒數:"+m);
System.out.println("相差天數:"+(m/(1000*60*60*24)));
要注意的地方:
時間格式可能有很多種,比如20150611或者2015年6月11日等等。所以你需要以對應的方式來初始化SimpleDateFormat對象。
例如20150611,就要寫成:
SimpleDateFormatsdf=newSimpleDateFormat("yyyyMMdd");
SimpleDateFormat類是非線程安全的,所以在高並發下需要加同步鎖,否則會出現靈異事件。
④ java 如何將日期年份相減
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Admin {
private static Format f = new SimpleDateFormat("yyyy-MM-dd");
public static void main(String... args) {
Date thisYear = new Date();
System.out.println(formatDate2YYYYMMDD(thisYear));
Date lastYear = lastYear(thisYear);
System.out.println(formatDate2YYYYMMDD(lastYear));
}
private static Date lastYear(Date thisYear) {
Calendar c = Calendar.getInstance();
c.setTime(thisYear);
c.add(Calendar.YEAR, -1);
return c.getTime();
}
private static String formatDate2YYYYMMDD(Date date) {
return f.format(date);
}
}