java可以使用計(jì)算日期的天數(shù)差,以下是詳細(xì)代碼:

專(zhuān)注于為中小企業(yè)提供網(wǎng)站設(shè)計(jì)、網(wǎng)站制作服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)陸港免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上1000+企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
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"));
}
/**
* 計(jì)算兩個(gè)日期之間相差的天數(shù)
* @param smdate 較小的時(shí)間
* @param bdate 較大的時(shí)間
* @return 相差天數(shù)
* @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));
}
/**
*字符串的日期格式的計(jì)算
*/
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));
}
}
分類(lèi): 電腦/網(wǎng)絡(luò) 程序設(shè)計(jì) 其他編程語(yǔ)言
問(wèn)題描述:
比如兩個(gè)日期:2005-12-31和2006-01-05,怎么才能精確的計(jì)算出這兩個(gè)日期之間差的天數(shù)?
望回答的詳細(xì)一些,謝了先.
解析:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
class Test2 {
public static String getDate(){
SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");
Date dd = new Date();
return ft.format(dd);
}
public static long getQuot(String time1, String time2){
long quot = 0;
SimpleDateFormat ft = new SimpleDateFormat("yyyy/MM/dd");
try {
Date date1 = ft.parse( time1 );
Date date2 = ft.parse( time2 );
quot = date1.getTime() - date2.getTime();
quot = quot / 1000 / 60 / 60 / 24;
} catch (ParseException e) {
e.printStackTrace();
}
return quot;
}
public static void main(String[] args) throws Exception {
String date1 = "2008/8/8";
String date2 = getDate();
long day = getQuot(date1,date2);
System.out.println( "距離 "+date1+" 還有 "+day+" 天" );
}
}
你看一下這段代碼,是從今天到2008/8/8的天數(shù)。
Date的getTime()方法返回自1970年1月1日午夜(通用時(shí)間)以來(lái)的毫秒數(shù)。
用2008/8/8的getTime()減去今天的getTime()就是這兩天相差的毫秒數(shù),1秒=1000毫秒,1分鐘=60秒,1小時(shí)=60分鐘,1天=24小時(shí),然后除除除就得到天數(shù)了。
java中對(duì)日期時(shí)間的處理比較多,獲取時(shí)間計(jì)算差值的代碼如下:
/*
*?Java代碼計(jì)算時(shí)間差
*?現(xiàn)在是:2004-03-26?13:31:40
*?過(guò)去是:2004-01-02?11:30:24
*/
SimpleDateFormat?df?=?new?SimpleDateFormat("yyyy-MM-dd?HH:mm:ss");
java.util.Date?now?=?df.parse("2004-03-26?13:31:40");
java.util.Date?date=df.parse("2004-01-02?11:30:24");
long?l=now.getTime()-date.getTime();
long?day=l/(24*60*60*1000);
long?hour=(l/(60*60*1000)-day*24);
long?min=((l/(60*1000))-day*24*60-hour*60);
long?s=(l/1000-day*24*60*60-hour*60*60-min*60);
System.out.println(""+day+"天"+hour+"小時(shí)"+min+"分"+s+"秒");
//現(xiàn)在要獲得兩個(gè)日期差,差的形式為:XX天XX小時(shí)XX分XX秒
如果你用上了 Java8:
import?java.time.LocalDate;
import?java.util.Scanner;
public?class?Demo?{
public?static?void?main(String[]?args)?throws?Exception?{
try?(Scanner?in?=?new?Scanner(System.in))?{
System.out.println("輸入第一個(gè)日期的年月日,并用空格分開(kāi):");
LocalDate?date1?=?LocalDate.of(in.nextInt(),?in.nextInt(),?in.nextInt());
System.out.println("輸入第二個(gè)日期的年月日,并用空格分開(kāi):");
LocalDate?date2?=?LocalDate.of(in.nextInt(),?in.nextInt(),?in.nextInt());
long?days?=?Math.abs(date1.toEpochDay()?-?date2.toEpochDay());
System.out.printf("這個(gè)兩個(gè)日期相差了?%d?天\n",?days);
}
}
}
思路就是根據(jù)它們相差的毫秒數(shù)除以每天的毫秒數(shù)(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+" 天");
}
運(yùn)行結(jié)果如下:
擴(kuò)展資料:
Java使用以下三種方法來(lái)比較兩個(gè)日期:
1、使用 getTime() 方法獲取兩個(gè)日期(自1970年1月1日經(jīng)歷的毫秒數(shù)值),然后比較這兩個(gè)值。
2、使用方法 before(),after() 和 equals()。例如,一個(gè)月的12號(hào)比18號(hào)早,則 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3、使用 compareTo() 方法,它是由 Comparable 接口定義的,Date 類(lèi)實(shí)現(xiàn)了這個(gè)接口。
SimpleDateFormat 是一個(gè)以語(yǔ)言環(huán)境敏感的方式來(lái)格式化和分析日期的類(lèi)。SimpleDateFormat 允許你選擇任何用戶(hù)自定義日期時(shí)間格式來(lái)運(yùn)行
例如:
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
這一行代碼確立了轉(zhuǎn)換的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是時(shí)、分、秒。
注意:有的格式大寫(xiě),有的格式小寫(xiě),例如 MM 是月份,mm 是分;HH 是 24 小時(shí)制,而 hh 是 12 小時(shí)制。
以上實(shí)例編譯運(yùn)行結(jié)果如下:
當(dāng)前時(shí)間為: 2018-09-14 10:16:34
參考資料:
Java官方API接口-Date
菜鳥(niǎo)教程-Java 日期時(shí)間
Calendar calendar = Calendar.getInstance();
long yiQian = calendar.getTimeInMillis();
calendar.set(2008,5,25);
long xianZai = calendar.getTimeInMillis();
//轉(zhuǎn)換成天
int day = (xianZai-yiQian)/(1000*60*60*24);
//轉(zhuǎn)換成想要的格式,這里定為1年=365天 1月=30天
//算出年
int year =day/365;
day = day%365;
//算出月
int month = day/30;
day = day%30;
//輸出結(jié)果
System.out.println(year+"年-"+month+"月-"+day+"天");
網(wǎng)頁(yè)題目:日期差java代碼 java時(shí)間比較年月日差幾天
文章路徑:http://chinadenli.net/article30/hhjopo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、網(wǎng)站內(nèi)鏈、網(wǎng)站導(dǎo)航、ChatGPT、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)