我就是想比较两个日期大小,找出靠后的日期
这个程序有问题,不管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);
}
}
这个程序有问题,不管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);
}
}
我觉得用这个api里的这个类
java.util.Calendar
就可以了,
如果你真的要精确的我后面发代码给你看相减的代码,有点长,得你自己看,
* 日期时间相减 <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是一个实体类,在下面发,也许不用看
* 日期时间个体类型 <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;
}
}
我感觉这个判定似乎没效果
if(date_j.after(date_k))
{
fh=jie;
System.out.println("111====== = "+fh);
}else{
fh=kai;
System.out.println("222====== = "+fh);
}
感觉 after() 方法好象不怎么起作用
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:dd");应该改为SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd HH:mm:ss");这个属于粗心错误吧。