我就是想比较两个日期大小,找出靠后的日期
这个程序有问题,不管kai的日期是大是小,他都是只给我返回kai的值.
我觉的程序没问题,实在找不到哪错了,请大家帮忙看看
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class cc {
public cc() {
super();
// TODO 自动生成构造函数存根
} public static void main(String[] args) {
String kai="";
String jie="";
String fh="";

//boolean pd1=false;
//boolean pd2=false;

kai="2008-03-10 17:04:11";
jie="2008-03-12 17:04:11";

if(kai !=null && jie!=null)
{
kai=kai.trim();
jie=jie.trim(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:dd");

        java.util.Date date_k = null;
        java.util.Date date_j = null;

        try { date_k = sdf.parse(kai);

date_j = sdf.parse(jie);

   
} catch (ParseException e1) {
// TODO 自动生成 catch 块
e1.printStackTrace();
}

System.out.println("--**--**--**  getLasttime 000 **--**--**--");  
System.out.println("时间 1="+kai);
System.out.println("时间 2="+jie);
if(date_j.after(date_k))
{
fh=jie;
System.out.println("111======   = "+fh);
}else{
fh=kai;
System.out.println("222======   = "+fh);
}

}
System.out.println("最后的时间: "+fh);

}



}

解决方案 »

  1.   

    貌似你的SimpleDateFormat初始化格式的时候有问题。yyyy-mm-dd HH:mm:dd不是应该yyyy-mm-dd HH:mi:ss
      

  2.   

    非要这样算吗,
    我觉得用这个api里的这个类
    java.util.Calendar
    就可以了,
    如果你真的要精确的我后面发代码给你看相减的代码,有点长,得你自己看,
      

  3.   

    /**
     * 日期时间相减 <br>
     * 注:日期时间“相加”可使用 Calendar.add(Calendar.MONTH,2); 方法 <br>
     * @param date1 相减时间之一
     * @param date2 相减时间之二
     * @return 返加相减之后的日期时间个体对象 <br>
     * 2008-2-19 <br>
     * 10:53:06 <br>
     * @author csj <br>
     */
    public static DateUnit dateMINUSdate(Date date1,Date date2){

    long value = date1.getTime()-date2.getTime();

    DateUnit dateUnit = new DateUnit();
    if(value<0){
    dateUnit.setSign(-1);
    value=(value*(-1));
    }

    dateUnit.setMsel(Long.valueOf(value%1000).intValue());
    long s=value/1000;
    dateUnit.setSecond(Long.valueOf(s%60).intValue());
    long m=s/60;
    dateUnit.setMinute(Long.valueOf(m%60).intValue());
    long h=m/60;

    dateUnit.setHour(Long.valueOf(h%24).intValue());
    dateUnit.setDay(Long.valueOf(h/24).intValue());

    return dateUnit;
    }
    DateUnit是一个实体类,在下面发,也许不用看
      

  4.   

    /** 
     * 日期时间个体类型 <br>
     * 2008-2-19 <br>
     * 10:49:21 <br>
     * @author csj <br>
     */
    public static class DateUnit{
    /**
         * 格式化数值对象,2位数 <br>
         * DecimalFormat <br>
         * 2008-2-19 <br>
         * 10:58:50 <br>
         * @author csj <br>
         */
        private final static DecimalFormat decimalFormat_2 = new DecimalFormat("00");
        /**
         * 格式化数值对象,3位数 <br>
         * DecimalFormat <br>
         * 2008-2-19 <br>
         * 10:58:50 <br>
         * @author csj <br>
         */
        private final static DecimalFormat decimalFormat_3 = new DecimalFormat("000");
        /**
     * 正负值符号 <br>
     * 正值:+1 <br>
     * 负值:-1 <br>
     * int <br>
     * 2008-2-19 <br>
     * 11:05:25 <br>
     * @author csj <br>
     */
    private int sign=+1;
    /**
     * 日 <br>
     * int <br>
     * 2008-2-19 <br>
     * 10:45:28 <br>
     * @author csj <br>
     */
    private int day;
    /**
     * 时 <br>
     * int <br>
     * 2008-2-19 <br>
     * 10:45:36 <br>
     * @author csj <br>
     */
    private int hour;
    /**
     * 分 <br>
     * int <br>
     * 2008-2-19 <br>
     * 10:45:46 <br>
     * @author csj <br>
     */
    private int minute;
    /**
     * 秒 <br>
     * int <br>
     * 2008-2-19 <br>
     * 10:45:52 <br>
     * @author csj <br>
     */
    private int second;
    /**
     * 毫秒 <br>
     * int <br>
     * 2008-2-19 <br>
     * 10:54:59 <br>
     * @author csj <br>
     */
    private int msel;
    /**
     * 获得 day 属性 <br>
     * @return day int <br>
     * 2008-2-19 <br>
     * 10:46:18 <br>
     * @author csj <br>
     */
    public int getDay() {
    return this.day;
    }
    /**
     * 设置 day 属性 <br>
     * @param day <br>
     * SET day int <br>
     * 2008-2-19 <br>
     * 10:46:18 <br>
     * @author csj <br>
     */
    protected final void setDay(int day) {
    this.day = day;
    }
    /**
     * 获得 hour 属性 <br>
     * @return hour int <br>
     * 2008-2-19 <br>
     * 10:46:18 <br>
     * @author csj <br>
     */
    public int getHour() {
    return this.hour;
    }
    /**
     * 获得 hour 属性 <br>
     * @return hour String <br>
     * 2008-2-19 <br>
     * 11:30:47 <br>
     * @author csj <br>
     */
    public String getHourString() {
    return DateUnit.decimalFormat_2.format(this.hour);
    }
    /**
     * 设置 hour 属性 <br>
     * @param hour <br>
     * SET hour int <br>
     * 2008-2-19 <br>
     * 10:46:18 <br>
     * @author csj <br>
     */
    protected final void setHour(int hour) {
    this.hour = hour;
    }
    /**
     * 获得 minute 属性 <br>
     * @return minute int <br>
     * 2008-2-19 <br>
     * 10:46:18 <br>
     * @author csj <br>
     */
    public int getMinute() {
    return this.minute;
    }
    /**
     * 获得 minute 属性 <br>
     * @return minute String <br>
     * 2008-2-19 <br>
     * 11:30:47 <br>
     * @author csj <br>
     */
    public String getMinuteString() {
    return DateUnit.decimalFormat_2.format(this.minute);
    }
    /**
     * 设置 minute 属性 <br>
     * @param minute <br>
     * SET minute int <br>
     * 2008-2-19 <br>
     * 10:46:19 <br>
     * @author csj <br>
     */
    protected final void setMinute(int minute) {
    this.minute = minute;
    }

    /**
     * 获得 second 属性 <br>
     * @return second int <br>
     * 2008-2-19 <br>
     * 10:46:19 <br>
     * @author csj <br>
     */
    public int getSecond() {
    return this.second;
    }
    /**
     * 获得 second 属性 <br>
     * @return second String <br>
     * 2008-2-19 <br>
     * 11:30:47 <br>
     * @author csj <br>
     */
    public String getSecondString() {
    return DateUnit.decimalFormat_2.format(this.second);
    }
    /**
     * 设置 second 属性 <br>
     * @param second <br>
     * SET second int <br>
     * 2008-2-19 <br>
     * 10:46:19 <br>
     * @author csj <br>
     */
    protected final void setSecond(int second) {
    this.second = second;
    }

    /**
     * 获得 msel 属性 <br>
     * @return msel int <br>
     * 2008-2-19 <br>
     * 10:55:19 <br>
     * @author csj <br>
     */
    public int getMsel() {
    return this.msel;
    }
    /**
     * 获得 msel 属性 <br>
     * @return msel String <br>
     * 2008-2-19 <br>
     * 11:30:47 <br>
     * @author csj <br>
     */
    public String getMselString() {
    return DateUnit.decimalFormat_3.format(this.msel);
    }
    /**
     * 设置 msel 属性 <br>
     * @param msel <br>
     * SET msel int <br>
     * 2008-2-19 <br>
     * 10:55:19 <br>
     * @author csj <br>
     */
    protected final void setMsel(int msel) {
    this.msel = msel;
    }
    /**
     * 获得 sign 属性 <br>
     * @return sign int <br>
     * 2008-2-19 <br>
     * 11:07:39 <br>
     * @author csj <br>
     */
    public int getSign() {
    return this.sign;
    }
    /**
     * 设置 sign 属性 <br>
     * @param sign <br>
     * SET sign int <br>
     * 2008-2-19 <br>
     * 11:07:39 <br>
     * @author csj <br>
     */
    protected final void setSign(int sign) {
    this.sign = sign;
    }


    }
      

  5.   

    其实就最下边的那个判定有问题
    我感觉这个判定似乎没效果

     if(date_j.after(date_k))
                    {
                        fh=jie;
    System.out.println("111======   = "+fh);    
                    }else{
                        fh=kai;
    System.out.println("222======   = "+fh);    
                    }
      

  6.   


    感觉 after() 方法好象不怎么起作用
      

  7.   

    楼主,先不说别的,你这个程序的错误之处就在:
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:dd");应该改为SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");这个属于粗心错误吧。
      

  8.   

    yyyy-MM-dd HH:mm:dd