永发信息网

java中如何计算出两个日期之间相差多少天

答案:5  悬赏:0  手机版
解决时间 2021-04-27 14:39
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 日期时间
全部回答
public long differ(Date date1, Date date2){
return date2.getTime() / 86400000 - date1.getTime()/ 86400000;
}

参考资料:http://blog.csdn.net/solomonxu/archive/2007/04/27/1587237.aspx

(big.getTime() - small.getTime()) / (1000 * 60 * 60 * 24);
java可以使用计算日期的天数差,以下是详细代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class test16 {

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"));
}


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));
}

}
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Test {
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)/(3600*24*1000);
System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天");

}
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
我现在穿越火线6级怎样维持
我的联想台式机主板是G31T-LM2 型号请问可以
U盘里的东西删除了又出来了
能不能下载七雄争霸?
海贼王有望突破1000集吗
消费者收入提高及西瓜价格提高会引起西瓜需求
下班路上被变态男摸了,女性该怎么样才能ぷ约
今年的nba冠军会花落谁家啊????
蓝色上衣配什么颜色的裤子好看?
怎么才能自信啊?
有一首歌歌词是我慢慢慢慢什么的有太多太多什
国外垃圾是怎样处理的?
猪圈里的猪逃走了怎么办?
怎么样让自己练习长跑
据说7月13号双河口欢乐大世界要搞个灯光节,
推荐资讯
关于gps的问题
个人怎么代理Pos机
MAX+上的磨损度排名准不准
苹果电脑XP系统打开后,boot camp 没有在右下
QQ空间相册怎么在最底下了
优学派u19磁盘满了怎么清理
爱得天真有错吗?
诺基亚5230与诺基亚5233的对比哪个更好?
+11力 最上级速射多少钱?
赌空在哪能下到MP3的
求眼睛被打肿的动漫图,越多越好
泪下厨下 洗手做羹汤是什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?