永发信息网

怎么求java,2个日期之间有多少天。。

答案:5  悬赏:10  手机版
解决时间 2021-04-01 22:33
怎么求java,2个日期之间有多少天。。
最佳答案
用毫秒数计算已经不是正确方法了。原因是夏令时间会造成计算错误。差一小时就是差一天。如果对这方面有疑问,可以补充问题,我再详细解答。
虽然在国内运用没有问题,但是如果用于国际化的金融系统就不行了。
所以建议你在学习阶段就认知,现代标准就是尽量不要使用毫秒数计算日期。

以下是正确方法:

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;
}
全部回答
用日历。。。。。
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小时,然后除除除就得到天数了。
先求出两个日期的毫秒数,然后相减,得到的结果除去1000 * 60 * 60 * 24得到天数
代码:
import java.util.Date;
public class TestMain {
public static void main(String[] args) {
Date date1 = new Date(用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));
}
}
方法是选择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
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
15岁男生练腹肌会长不高吗?
in case i don't see ya goodafternoon g
斗鱼很久以前有个萝莉主播 直播只露一半的脸
大师高韶青在加拿大新总督就职典礼上的后面的
中国邮政储蓄银行每个都有西联汇款吗?
520马上到来,大家都是和我一样一个人吗
B站直传视频支持哪些格式?我用KK录像机录完
如何辨别笔记本电脑的新与旧
我做效果图 渲染3D等等,应该选用AMD的还是In
只有一个卫生间,下沉15公分左右。蹲便器移位
分手了,男朋友为何只删除微信,QQ留着还逛空
10000端口是干嘛用的?怎么关闭它?
近十几年来,我国国家和企业分配份额呈现双增
欧司朗,雪莱特,飞利浦LED车灯哪个好一些
大金星红果什么时间打奈乙酸
推荐资讯
0-0买小球2算不算赢?
图书馆大楼四周成一个长84米,宽60米的长方形
举目见日,不见长安的答案
这是天然的铜发晶,价位是多少钱一克,大概值
单选题某人利用系着绳子的水桶从深井中提水,
洗衣机0E表示什么意思
一个三角形底长3厘米,高是10厘米,斜边长是
有谁现在东莞松山湖华为聚信工作,请问他们现
恋夜影院为什么打不开
开个奶茶店每个月有多少利润
我想给孩子断奶怎么样才能使奶水逐渐变少
领英有访客记录吗?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?