比如:客户从页面输入发布有效天数=21 存入数据库我从数据库读出有效天数=21,如何利用系统当前时间来换算21,从而取得剩余天数???

解决方案 »

  1.   

    有效日期不就是 剩余天数么?
    java 中显示当前日期的方法是通过java.util.Date来实现。基本代码如下:import java.util.Date;    Date dateNow=new Date();这个时候可以通过java.text.SimpleDateFormat 进行格式化显示。    SimpleDateFormat  dateFormat=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");    String dateNowStr=dateFormat.format(dateNow);    打印 dateNowStr就可以了
      

  2.   

    也可以写一个公共方法
      传入客户输入的时间 和他设置的日期size存入数据库显示时只要判断当前日期和存入的日期就行
    public String addDay(String day,int size) {
           
    SimpleDateFormat sfObj = new SimpleDateFormat("yyyy-MM-dd"); 
    GregorianCalendar cal = new GregorianCalendar();
    String newday="";
    try {
    cal.setTime(sfObj.parse(day));
    } catch (ParseException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    cal.add(GregorianCalendar.DATE, size);// 在日期上加7天
    newday=sfObj.format(cal.getTime()); 
             
               return newday;
    }
      

  3.   

    存有效天数,应该还有输入的日期吧。
    如果这样的话可以分另求出输入的日期的天数,和当前日期的天数,然后求差与21进行比较;
    求给定日期返回它的天数可以用这个方法。它是以1年,1月,1日作为起点:
    public static int getDays(Date d)
    {
      Calendar c = Calendar.getInstance();
      c.setTime(d);
      int dDay   =  c.get(Calendar.DATE);
      int dYear  =  c.get(Calendar.YEAR);
      int dMonth =  c.get(Calendar.MONTH);
      int days=0;
      int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
      if(dYear%400==0||dYear%4==0&&dYear%100!=0){
      months[2]=29;
      }
      days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
      for(int i=1;i<dMonth;i++){
      days+=months[i];
      }
      days+=dDay;
      return days;
    }
      

  4.   


        SimpleDateFormat  dateFormat=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss");    String dateNowStr=dateFormat.format(dateNow);
           public static int getDays(Date d)
        {
              Calendar c = Calendar.getInstance();
              c.setTime(d);
              int dDay   =  c.get(Calendar.DATE);
              int dYear  =  c.get(Calendar.YEAR);
              int dMonth =  c.get(Calendar.MONTH);
              int days=0;
              int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};
              if(dYear%400==0||dYear%4==0&&dYear%100!=0){
                  months[2]=29;
              }
              days=dYear*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;
              for(int i=1;i<dMonth;i++){
                  days+=months[i];
              }
              days+=dDay;
              return days;
        }
    上面那个不错再改改就好了
      

  5.   

    其实你可以做一个查询数据库的函数 mysql> select date_add(curdate(),interval 21 day);
    +-------------------------------------+
    | date_add(curdate(),interval 21 day) |
    +-------------------------------------+
    | 2009-09-23                          |
    +-------------------------------------+
    1 row in set (0.00 sec)
      

  6.   

    这里有个解决方案:http://blog.csdn.net/yanliang_xt/archive/2009/09/02/4513000.aspx
      

  7.   


    import java.text.*;   
    import java.util.*;   
    public class Work090100{    
        public static void main(String[] args) throws ParseException{    
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
            Date d1 = sdf.parse("2009-9-2");   
            Date d2 = sdf.parse("2009-8-2");   
            System.out.println("相差:" + (getDays(d1) - getDays(d2)));   
        }   
        public static int getDays(Date d)   
        {   
              Calendar c = Calendar.getInstance();   
              c.setTime(d);   
              int dDay   =  c.get(Calendar.DATE);   
              int dYear  =  c.get(Calendar.YEAR);   
              int dMonth =  c.get(Calendar.MONTH) + 1;  //注意month是从0开始计的我们加1   
      
              int days=0;   
              int[] months={0,31,28,31,30,31,30,31,31,30,31,30,31};   
              if(dYear%400==0||dYear%4==0&&dYear%100!=0){   
                  months[2]=29;   
              }   
      
              days=(dYear-1)*365+(dYear-1)/4-(dYear-1)/100+(dYear-1)/400;   
              for(int i=1;i<dMonth;i++){   
                  days+=months[i];   
              }   
              days+=dDay;   
                 
              return days;   
        }   
    }  
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yanliang_xt/archive/2009/09/03/4516579.aspx
      

  8.   

    思路 :
        数据库存的是datetime类型的数据  减去当前系统时间就是剩余时间了
           就像公司里的员工的年龄一样,每年都在变,一般都放的是时间类型,不会去放int类型的数据