信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索

java中计算两个日期相差几天和多方法实例教程

查看数: 1830 | 评论数: 2 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2016-9-30 12:56

正文摘要:

java教程|再次记下Java计算两个日期时间相差几天几分钟几秒,这样计算两个时间的在开发中是常常用到的publicclassTest{publicvoiddateDiff(StringstartTime,Stri... 再次记下Java计算两个日期时间相差 ...

回复

软件定制 发表于 2016-9-30 12:57:58
实例教程3

我现在要获得两个日期差,差的形式为:XX天XX小时XX分XX秒
方法一:
  • DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  • try  
  • {   
  •     Date d1 = df.parse("2004-03-26 13:31:40");   
  •     Date d2 = df.parse("2004-01-02 11:30:24");   
  •     long diff = d1.getTime() - d2.getTime();   
  •     long days = diff / (1000 * 60 * 60 * 24);   
  • }   
  • catch (Exception e)   
  • {   
  • }  

DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");try{    Date d1 = df.parse("2004-03-26 13:31:40");    Date d2 = df.parse("2004-01-02 11:30:24");    long diff = d1.getTime() - d2.getTime();    long days = diff / (1000 * 60 * 60 * 24);}catch (Exception e){}


方法二:
  • 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+"小时"+min+"分"+s+"秒");  

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+"小时"+min+"分"+s+"秒");

   
方法三:
  • SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  •    java.util.Date begin=dfs.parse("2004-01-02 11:30:24");   
  •    java.util.Date end = dfs.parse("2004-03-26 13:31:40");   
  •    long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒   
  •    long day1=between/(24*3600);   
  •    long hour1=between%(24*3600)/3600;   
  •    long minute1=between%3600/60;   
  •    long second1=between%60/60;   
  •    System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");  

SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   java.util.Date begin=dfs.parse("2004-01-02 11:30:24");   java.util.Date end = dfs.parse("2004-03-26 13:31:40");   long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒   long day1=between/(24*3600);   long hour1=between%(24*3600)/3600;   long minute1=between%3600/60;   long second1=between%60/60;   System.out.println(""+day1+"天"+hour1+"小时"+minute1+"分"+second1+"秒");

   
====================================================
java 比较时间大小
  • String s1="2008-01-25 09:12:09";   
  • String s2="2008-01-29 09:12:11";   
  • java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");   
  • java.util.Calendar c1=java.util.Calendar.getInstance();   
  • java.util.Calendar c2=java.util.Calendar.getInstance();   
  • try  
  • {   
  • c1.setTime(df.parse(s1));   
  • c2.setTime(df.parse(s2));   
  • }catch(java.text.ParseException e){   
  • System.err.println("格式不正确");   
  • }   
  • int result=c1.compareTo(c2);   
  • if(result==0)   
  • System.out.println("c1相等c2");   
  • else if(result<0)   
  • System.out.println("c1小于c2");   
  • else  
  • System.out.println("c1大于c2");  

String s1="2008-01-25 09:12:09";String s2="2008-01-29 09:12:11";java.text.DateFormat df=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");java.util.Calendar c1=java.util.Calendar.getInstance();java.util.Calendar c2=java.util.Calendar.getInstance();try{c1.setTime(df.parse(s1));c2.setTime(df.parse(s2));}catch(java.text.ParseException e){System.err.println("格式不正确");}int result=c1.compareTo(c2);if(result==0)System.out.println("c1相等c2");else if(result<0)System.out.println("c1小于c2");elseSystem.out.println("c1大于c2");


//时间格式转换
  • FastDateFormat df = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");   
  • String date = df.format(java.util.Date());   

FastDateFormat df = FastDateFormat.getInstance("yyyy-MM-dd HH:mm:ss");String date = df.format(java.util.Date());
软件定制 发表于 2016-9-30 12:57:23
实例教程2

在测试工作中经常会使用到比较两个日期相差的天数,我之前用过实现这一功能的两个版本的方法,源代码如下:

(版本1)

publicstaticint getIntervalDays(Date fDate, Date oDate) {

       if (null == fDate || null == oDate) {

           return -1;

       }

       long intervalMilli = oDate.getTime() - fDate.getTime();

       return (int) (intervalMilli / (24 * 60 * 60 * 1000));

    }

    (版本2)

publicstaticint daysOfTwo(Date fDate, Date oDate) {

       Calendar aCalendar = Calendar.getInstance();

       aCalendar.setTime(fDate);

       int day1 = aCalendar.get(Calendar.DAY_OF_YEAR);

       aCalendar.setTime(oDate);

       int day2 = aCalendar.get(Calendar.DAY_OF_YEAR);

       return day2 - day1;

    }


为什么使用这两个版本的方法,因为我使用过程中,遇到了和我预期不一致的情况,比如下面一个使用范例


    publicstaticvoid main(String[] args) {

       Date fDate = new GregorianCalendar().getTime();

       Date oDate = new GregorianCalendar(2009, 2, 15,13,13,0).getTime();

       System.out.println("使用 getIntervalDays 相差天数 = "

                     + getIntervalDays(fDate, oDate));

      

       System.out.println("使用 daysOfTwo 相差天数 = "

              + daysOfTwo(fDate, oDate));

}

这个例子中调用了两个版本的方法,但输出结果有时不相同,此前我一直不明白为什么,后来细心研究了一下,原来是我对这两个版本的方法没有清楚的理解。版本1的方法要比较的严格意义上的天,举个例子,计算今天与昨天比较相差几天,我们或许都认为是1,但我们要输入两个日期类型的参数,这个日期中不仅包含天,还有小时,分等,版本1会根据您输入的小时与分不同,返回不同的结果的,比如你输入的参数今天中午与昨天晚上的两个时间,它就会告诉你相差0天。同样的输入版本2只关心天,输出的结果是1,也是我想要的结果。总结起来这两个方法都是对的,关键的是调用者要明白你想要的究竟是什么样的结果。

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2024-11-23 22:09 , Processed in 0.095997 second(s), 43 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表