怎么求java,2个日期之间有多少天。。
发布网友
发布时间:2022-04-26 05:00
我来回答
共5个回答
热心网友
时间:2022-06-20 22:57
用毫秒数计算已经不是正确方法了。原因是夏令时间会造成计算错误。差一小时就是差一天。如果对这方面有疑问,可以补充问题,我再详细解答。
虽然在国内运用没有问题,但是如果用于国际化的金融系统就不行了。
所以建议你在学习阶段就认知,现代标准就是尽量不要使用毫秒数计算日期。
以下是正确方法:
public static long daysBetween(Calendar startDate, Calendar endDate) {
Calendar date = (Calendar) startDate.clone();
long daysBetween = 0;
while (date.before(endDate)) {
date.add(Calendar.DAY_OF_MONTH, 1);
daysBetween++;
}
return daysBetween;
}
热心网友
时间:2022-06-20 22:57
用Calendar类,可以先得到你规定日期的毫秒数,然后计算两个日期的毫秒数之差,再除于一天的毫秒数,便得到两个日期相差几天了,简单的代码如下
import java.util.Calendar;
public class DaysBetween {
public static void main(String[] args) {
System.out.println(getDays(getDate(2010, 10, 23), getDate(2010, 11, 1)));
}
// 得到规定日期的毫秒数
public static Long getDate(int year, int month, int date) {
Calendar c = Calendar.getInstance();
c.set(year, month, date);
return c.getTimeInMillis();
}
// 计算两个日期之间的毫秒数,然后除于1天的毫秒数,便得到他们之间相差多少天
public static int getDays(Long t1, Long t2) {
return (int)((t2 - t1)/(1000*60*60*24));
}
}
热心网友
时间:2022-06-20 22:58
方法是选择1970/1/1为共同参考点,然后取两个相距时间的毫秒数字,相差得毫秒转换成天数就可以了。
import java.util.Date;
public class JulianDay {
public static void main(String[] args) {
Date date1 = new Date(2010, 1, 1);
Date date2 = new Date(2011, 2, 1);
long julianDay = calcJulianDay(date1, date2);
System.out.println("Julian day is: " + julianDay);
}
private static long calcJulianDay(Date date1, Date date2) {
long dt1Seconds = date1.getTime();//自 1970 年 1 月 1 日 00:00:00 GMT 以来此 date1表示的毫秒数
long dt2Seconds = date2.getTime();//自 1970 年 1 月 1 日 00:00:00 GMT 以来此 date2表示的毫秒数
long julianDay = ((dt2Seconds - dt1Seconds) /1000) / (60*60*24);
return julianDay;
}
}
-------------
Julian day is: 393
热心网友
时间:2022-06-20 22:58
先求出两个日期的毫秒数,然后相减,得到的结果除去1000 * 60 * 60 * 24得到天数
代码:
import java.util.Date;
public class TestMain {
public static void main(String[] args) {
Date date1 = new Date(111, 0, 4);
Date date2 = new Date(111, 1, 4);
long time1 = date1.getTime();
long time2 = date2.getTime();
long cd = (time2 - time1) / (1000 * 60 * 60 * 24);
System.out.println("相差天数:"+cd);
}
}
运行结果:
相差天数:31
热心网友
时间:2022-06-20 22:59
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的天数。
Date的getTime()方法返回自1970年1月1日午夜(通用时间)以来的毫秒数。
用2008/8/8的getTime()减去今天的getTime()就是这两天相差的毫秒数,1秒=1000毫秒,1分钟=60秒,1小时=60分钟,1天=24小时,然后除除除就得到天数了。