比较时间问题,实在看不出哪错了.帮忙看下程序

MattHgh 2008-03-31 08:38:18
我就是想比较两个日期大小,找出靠后的日期
这个程序有问题,不管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);



}



}




...全文
144 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
MattHgh 2008-04-02
  • 打赏
  • 举报
回复
谢谢大家
Cspider588 2008-04-01
  • 打赏
  • 举报
回复
楼主,先不说别的,你这个程序的错误之处就在:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:dd");

应该改为

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");

这个属于粗心错误吧。。。。
MattHgh 2008-04-01
  • 打赏
  • 举报
回复

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

xql80329 2008-04-01
  • 打赏
  • 举报
回复
比较日期 不用那么麻烦比较
numen_wlm 2008-04-01
  • 打赏
  • 举报
回复
简单问题复杂化
MattHgh 2008-04-01
  • 打赏
  • 举报
回复
其实就最下边的那个判定有问题
我感觉这个判定似乎没效果



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


beysion 2008-04-01
  • 打赏
  • 举报
回复
男人真细啊,真是细男
fu_wie 2008-04-01
  • 打赏
  • 举报
回复
确实挺细的
longshenls 2008-04-01
  • 打赏
  • 举报
回复
yyyy-MM-dd HH:mm:dd
不懂编程 2008-04-01
  • 打赏
  • 举报
回复
楼上的心细呀
chensjmail 2008-03-31
  • 打赏
  • 举报
回复
我只算到天,
最大的单位是天,所以不知道是否对你有用
chensjmail 2008-03-31
  • 打赏
  • 举报
回复


/**
* 日期时间个体类型 <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;
}


}


chensjmail 2008-03-31
  • 打赏
  • 举报
回复


/**
* 日期时间相减 <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是一个实体类,在下面发,也许不用看
chensjmail 2008-03-31
  • 打赏
  • 举报
回复
非要这样算吗,
我觉得用这个api里的这个类
java.util.Calendar
就可以了,
如果你真的要精确的我后面发代码给你看相减的代码,有点长,得你自己看,
jianfeihit 2008-03-31
  • 打赏
  • 举报
回复
貌似你的SimpleDateFormat初始化格式的时候有问题。yyyy-mm-dd HH:mm:dd不是应该yyyy-mm-dd HH:mi:ss

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧