本文目錄一覽:
Java比較兩個時間相差多少天,多少個月,多少年
java比較兩個時間相差,可以使用calender類的api,實例如下:
package com.test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @description 日期比較天 月 年
* @author
*/
public class DateTest {
public static void main(String[] args) {
String date = “2008-06-12”;
DateTest.compareDate(date, null, 0);
DateTest.compareDate(date, null, 1);
DateTest.compareDate(date, null, 2);
date = “2006-06-03”;
DateTest.compareDate(date, null, 0);
DateTest.compareDate(date, null, 1);
DateTest.compareDate(date, null, 2);
DateTest.compareDate(date, “2009-06-01”, 0);
DateTest.compareDate(date, “2009-06-01”, 1);
DateTest.compareDate(date, “2009-06-01”, 2);
}
/**
* @param date1 需要比較的時間 不能為空(null),需要正確的日期格式
* @param date2 被比較的時間 為空(null)則為當前時間
* @param stype 返回值類型 0為多少天,1為多少個月,2為多少年
* @return
*/
public static int compareDate(String date1,String date2,int stype){
int n = 0;
String[] u = {“天”,”月”,”年”};
String formatStyle = stype==1?”yyyy-MM”:”yyyy-MM-dd”;
date2 = date2==null?DateTest.getCurrentDate():date2;
DateFormat df = new SimpleDateFormat(formatStyle);
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
try {
c1.setTime(df.parse(date1));
c2.setTime(df.parse(date2));
} catch (Exception e3) {
System.out.println(“wrong occured”);
}
//List list = new ArrayList();
while (!c1.after(c2)) { // 循環對比,直到相等,n 就是所要的結果
//list.add(df.format(c1.getTime())); // 這裡可以把間隔的日期存到數組中 列印出來
n++;
if(stype==1){
c1.add(Calendar.MONTH, 1); // 比較月份,月份+1
}
else{
c1.add(Calendar.DATE, 1); // 比較天數,日期+1
}
}
n = n-1;
if(stype==2){
n = (int)n/365;
}
System.out.println(date1+” — “+date2+” 相差多少”+u[stype]+”:”+n);
return n;
}
/**
* 得到當前日期
* @return
*/
public static String getCurrentDate() {
Calendar c = Calendar.getInstance();
Date date = c.getTime();
SimpleDateFormat simple = new SimpleDateFormat(“yyyy-MM-dd”);
return simple.format(date);
}
}
運行結果:
2008-06-12 — 2009-06-09 相差多少天:362
2008-06-12 — 2009-06-09 相差多少月:12
2008-06-12 — 2009-06-09 相差多少年:0
2006-06-03 — 2009-06-09 相差多少天:1102
2006-06-03 — 2009-06-09 相差多少月:36
2006-06-03 — 2009-06-09 相差多少年:3
2006-06-03 — 2009-06-01 相差多少天:1094
2006-06-03 — 2009-06-01 相差多少月:36
2006-06-03 — 2009-06-01 相差多少年:2
java中如何計算出兩個日期之間相差多少天
思路就是根據它們相差的毫秒數除以每天的毫秒數(60*60*24*1000),代碼如下:
public static void main(String[] args) throws ParseException {
String date1=”1987-01-01″;
String date2=”2010-01-01″;
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-mm-dd”);
Date d1=sdf.parse(date1);
Date d2=sdf.parse(date2);
long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(60*60*24*1000);
System.out.println(“1987-01-01 與 2010-01-01 相隔 “+daysBetween+” 天”);
}
運行結果如下:
擴展資料:
Java使用以下三種方法來比較兩個日期:
1、使用 getTime() 方法獲取兩個日期(自1970年1月1日經歷的毫秒數值),然後比較這兩個值。
2、使用方法 before(),after() 和 equals()。例如,一個月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3、使用 compareTo() 方法,它是由 Comparable 介面定義的,Date 類實現了這個介面。
SimpleDateFormat 是一個以語言環境敏感的方式來格式化和分析日期的類。SimpleDateFormat 允許你選擇任何用戶自定義日期時間格式來運行
例如:
SimpleDateFormat ft = new SimpleDateFormat (“yyyy-MM-dd hh:mm:ss”);
這一行代碼確立了轉換的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是時、分、秒。
注意:有的格式大寫,有的格式小寫,例如 MM 是月份,mm 是分;HH 是 24 小時制,而 hh 是 12 小時制。
以上實例編譯運行結果如下:
當前時間為: 2018-09-14 10:16:34
參考資料:
Java官方API介面-Date
菜鳥教程-Java 日期時間
java怎麼計算兩個日期相差幾天
java可以使用計算日期的天數差,以下是詳細代碼:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test16 {
/**
* @param args
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
// TODO Auto-generated method stub
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”);
Date d1=sdf.parse(“2012-09-08 10:10:10”);
Date d2=sdf.parse(“2012-09-15 00:00:00”);
System.out.println(daysBetween(d1,d2));
System.out.println(daysBetween(“2012-09-08 10:10:10″,”2012-09-15 00:00:00”));
}
/**
* 計算兩個日期之間相差的天數
* @param smdate 較小的時間
* @param bdate 較大的時間
* @return 相差天數
* @throws ParseException
*/
public static int daysBetween(Date smdate,Date bdate) throws ParseException
{
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
smdate=sdf.parse(sdf.format(smdate));
bdate=sdf.parse(sdf.format(bdate));
Calendar cal = Calendar.getInstance();
cal.setTime(smdate);
long time1 = cal.getTimeInMillis();
cal.setTime(bdate);
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
/**
*字元串的日期格式的計算
*/
public static int daysBetween(String smdate,String bdate) throws ParseException{
SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd”);
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(smdate));
long time1 = cal.getTimeInMillis();
cal.setTime(sdf.parse(bdate));
long time2 = cal.getTimeInMillis();
long between_days=(time2-time1)/(1000*3600*24);
return Integer.parseInt(String.valueOf(between_days));
}
}
Java計算兩個日期時間相差幾天,幾小時,幾分鐘等
思路是先計算兩個日期相差的毫秒數,然後分別根據每天的毫秒數、每小時的毫秒數、每分鐘的毫秒數來計算相差幾天,幾小時,幾分鐘。具體代碼如下:
public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;//每天毫秒數
long nh = 1000 * 60 * 60;//每小時毫秒數
long nm = 1000 * 60;//每分鐘毫秒數
long diff = endDate.getTime() – nowDate.getTime(); // 獲得兩個時間的毫秒時間差異
long day = diff / nd; // 計算差多少天
long hour = diff % nd / nh; // 計算差多少小時
long min = diff % nd % nh / nm; // 計算差多少分鐘
return day + “天” + hour + “小時” + min + “分鐘”;
}
然後做一個測試,調用這個方法測試一下:
可以看出兩個日期時間相差幾天,幾小時,幾分鐘都可以算出來。
擴展資料:
Java使用以下三種方法來比較兩個日期:
1、使用 getTime() 方法獲取兩個日期(自1970年1月1日經歷的毫秒數值),然後比較這兩個值。
2、使用方法 before(),after() 和 equals()。例如,一個月的12號比18號早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3、使用 compareTo() 方法,它是由 Comparable 介面定義的,Date 類實現了這個介面。
參考資料:
Oracle官方API介面-Util-Date
Oracle官方API介面-SimpleDateFormat
菜鳥教程-Java 日期時間
原創文章,作者:UVTSW,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/330933.html