求两个日期之间相隔的天数

    1、         

       long tm = (Calendar.getInstance().getTimeInMillis() - date2.getTime());
       
       
int ms = (int)(tm%1000); tm /= 1000;
       
int sc = (int)(tm%60);   tm /= 60;
       
int mn = (int)(tm%60);   tm /= 60;
       
int hr = (int)(tm%24);
       
long dy = tm/24;
       
        String useTime
= dy+""+hr+"小时"+mn+""+sc+"."+ms+"";

2、 只求天数的话,用compareTo最简单了。。

把日期转化成 YYYY-MM-DD 的格式就OK

System.out.println(("2008-12-10").compareTo("2008-12-12"));

3、    public static void main(String[] args)
    {
        Date date = new Date();
        String num = "2009-6-10";
        try{
            Date m_endTime = new java.text.SimpleDateFormat("yyyy-MM-dd").parse("2009-6-10");
            System.out.println((date.getTime()- m_endTime.getTime())/86400000);
        }catch(Exception ex){
            ex.printStackTrace();
        } 
    }

4、

select to_date(日期字段,'yyyyMMdd')-to_date(to_char(SYSDATE,'yyyyMMdd'),'yyyyMMdd') AS TS
from table1;

5、 oracle数据库
select floor(to_date('20080301','yyyymmdd')-sysdate) from dual;

6、sqlserver下: select DATEDIFF(day,getdate(),'2010-6-25')
      Calendar和Date转换

7、 最好把日期格式换成Date类型的,用java提供的方法就能比较出来相差的时间了

8、 判断是否是日期的方法,日期格式 2010-6-25

        public boolean isDate(String date){
//查找分隔符
int index1=Integer.parseInt(date.indexOf("-"));
//如果分隔符不存在,则不是合法的时间
if(index1==-1)
   
return false;
//获取时间中的年
String year=date.substring(0,index1);
//获取时间中的午剩余部分
date=date.substring(index1+1);
//查找第二个分隔符
index1=date.indexOf("-");
//如果不存在第二个分隔符,则不是合法的时间
if(index1==-1)
       
return false;
//获取时间中的月分
String month=date.substring(0,index1);
//获取时间中的日
String day=date.substring(index1+1);
//判断是否是数字,如果 不是,则也不是合法的时间
if(isNumber(year)&&isNumber(month)&&isNumber(day)){
//判断基本范围
if(year<1900||year>9999||month<1||month>12||day<1)
   
return false
//判断31天的月
if((month==1||month==3||month==5||month==7||month8||month==10||month==12)&&day>31)
     
return false;
//判断30天的月
if((month=4||month==6||month==9||month==11))&&day>30)
     
return false;
//如果是2月,判断是否是闰年
if(month==2){
if(year%400==0||(year%4==0&&year%100!=0)){
if(day>29)
   
return false;
}
else{
  
if(day>28)
     
return false;
}
}
}
else
    retrun
false;
return true;
}
public boolean isNumber(String num){
for(int i=0;i<num.length;i++){
//每一位都是0~9的数字,如果是第一位,则可以是“—”号
if(num.charAt(i)>='0'&&num.charAt(i)<='9'||num.charAt(i)=='-'&&i==0)
   
continue;
else
  
return false;
}
return true;
}

9、

     public static void main(String[] args) throws ParseException {
        String date1
= "2009-6-7";
        String date2
= "2009-5-8";
       
long date_long1 = new SimpleDateFormat("yyyy-MM-dd").parse(date1).getTime();
       
long date_long2 = new SimpleDateFormat("yyyy-MM-dd").parse(date2).getTime();
       
if(date_long1 > date_long2){
            System.out.println((date_long1
- date_long2) / 1000 / 60 / 60 / 24);
        }
else{
            System.out.println((date_long2
- date_long1) / 1000 / 60 / 60 / 24);
        }
    }

10、

   
/**
  *   获取现在时间
  *  
  *   @return   返回短时间字符串格式yyyy-MM-dd
  */
public   static   String   getStringDateShort()   {
Date   currentTime   =   new   Date();
SimpleDateFormat   formatter   =   new   SimpleDateFormat( "yyyy-MM-dd ");
String   dateString   =   formatter.format(currentTime);
return   dateString;
}


/**
  *   两个时间之间的天数
  *  
  *   @param   date1
  *   @param   date2
  *   @return
  */
public   static   long   getDays(String   date1,   String   date2)   {
if   (date1   ==   null   ||   date1.equals( " "))
return   0;
if   (date2   ==   null   ||   date2.equals( " "))
return   0;
//   转换为标准时间
SimpleDateFormat   myFormatter   =   new   SimpleDateFormat( "yyyy-MM-dd ");
java.util.Date   date   =   null;
java.util.Date   mydate   =   null;
try   {
date   =   myFormatter.parse(date1);
mydate   =   myFormatter.parse(date2);
}   catch   (Exception   e)   {
}
long   day   =   (date.getTime()   -   mydate.getTime())   /   (24   *   60   *   60   *   1000);
return   day;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值