在實際的應用中,我們經常會比較兩個日期相差的天數,下面我們通過java方法判斷兩個日期所差的額天數。
具體內容,請看下面的代碼:
package com.jd.jr.fclient.test; import org.junit.Test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 日期測試類 * * @author zhanghao10@jd.com * @since 2016/3/18 0018 */ public class DateTest { /** * 使用Calendar類 輔助完成天數的差值 * 在不涉及到跨年的情況,此種方法是沒問題的 * 但是設計跨年的情況,此種方法回出問題的哦 * * 如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 1 * * @throws ParseException */ @Test public void daysOfTwo_1() throws ParseException { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //跨年的情況會出現問題哦 //如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 1 Date fDate=sdf.parse("2015-12-31"); Date oDate=sdf.parse("2016-01-01"); Calendar aCalendar = Calendar.getInstance(); aCalendar.setTime(fDate); int day1 = aCalendar.get(Calendar.DAY_OF_YEAR); aCalendar.setTime(oDate); int day2 = aCalendar.get(Calendar.DAY_OF_YEAR); int days=day2-day1; System.out.print(days); } /** * 通過毫秒值,手動計算日期間的相關的值 * * 跨年不會出現問題 * 使用此種方法的話需要注意 * 如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 0 * * @throws ParseException */ @Test public void daysOfTwo_2() throws ParseException { SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //跨年不會出現問題 //如果時間為:2016-03-18 11:59:59 和 2016-03-19 00:00:01的話差值為 0 Date fDate=sdf.parse("2015-12-31"); Date oDate=sdf.parse("2016-01-01"); long days=(oDate.getTime()-fDate.getTime())/(1000*3600*24); System.out.print(days); } }
大家可以根據實際的需要選擇對應的計算方法即可。
下面附上JS計算兩個日期的相差天數的值計算方法:
var date1=new Date(); //開始時間 alert("aa"); var date2=new Date(); //結束時間 var date3=date2.getTime()-date1.getTime() //時間差的毫秒數 //計算出相差天數 var days=Math.floor(date3/(24*3600*1000)) //計算出小時數 var leave1=date3%(24*3600*1000) //計算天數后剩余的毫秒數 var hours=Math.floor(leave1/(3600*1000)) //計算相差分鍾數 var leave2=leave1%(3600*1000) //計算小時數后剩余的毫秒數 var minutes=Math.floor(leave2/(60*1000)) //計算相差秒數 var leave3=leave2%(60*1000) //計算分鍾數后剩余的毫秒數 var seconds=Math.round(leave3/1000) alert(" 相差 "+days+"天 "+hours+"小時 "+minutes+" 分鍾"+seconds+" 秒")
好吧,就先到這里吧