新手, 两个日期怎么比较。

roxette909 2006-04-06 09:21:46
两个变量,都是datatime的,打印出来一个是Wed Apr 05 00:00:00 CST 2006 ,一个是 2006-04-05

这样比较if(getDate().compareTo(dtCurrent) >= 0)

结果却是:Wed Apr 05 00:00:00 CST 2006 < 2006-04-05

请教,怎样比较这两个变量的日期?不比时间。
...全文
2927 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
laughsmile 2006-04-10
  • 打赏
  • 举报
回复
如果得到的日期字符串是全角"20050101",这要大于"20060101".
cuiyingfeng 2006-04-08
  • 打赏
  • 举报
回复
getDate()是从jdbc提供的方法,取出来的是java.sql.Date,精度到天,默认时分秒均为0;
new Date(System.currentTimeMillis())楼主很可能用的是java.util.Date类型,精度到微妙,默认时分秒为此时刻,自然比较前者小于后者
langya333 2006-04-08
  • 打赏
  • 举报
回复
我觉得用long型来比较最好的。

方法是:把时间类型(不管是什么类型的,Date也行、Calendar也行)转换成long型,然后比较两个long的大小。

Date d1 = new Date();
Date d2 = new Date();

long l1 = d1.getTime();
long l2 = d2.getTime();

if (l1 < l2)
{
...
}
kaukiyou 2006-04-08
  • 打赏
  • 举报
回复
to kaukiyou(小全) :
象这样,就无法判断大小
请指教:年月日是数字,为什么不能比较大小?
20060910 == 20060910 20060911 > 20060910
做鸡真好吃 2006-04-08
  • 打赏
  • 举报
回复
Mark~
rongdajian 2006-04-07
  • 打赏
  • 举报
回复
值得学习哈!平时还没有注意到这个问题,看来平时得真的注意了哟!
qiongtumlL 2006-04-07
  • 打赏
  • 举报
回复
结成年月日,分开比较
tomison 2006-04-07
  • 打赏
  • 举报
回复
关于楼主的问题,谁能给出个完整的程序,上面的都没有解决到这个问题!我自己想了下,还是没搞定,请高手指教
aywrenyue 2006-04-07
  • 打赏
  • 举报
回复
转换为同一类型来比较
leeyufeng1981 2006-04-07
  • 打赏
  • 举报
回复
可以转化为两个String值得比较
import java.text.SimpleDateFormat;
import java.util.Date;


public class Test
{
public static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
private static void compare_Date(Date EffectiveStartDate){
Date dtCurrent=new Date();

String EffectiveStart_Date = sdf.format(EffectiveStartDate);
String dtCurrent_Date = sdf.format(dtCurrent);

if(EffectiveStart_Date.compareTo(dtCurrent_Date) >= 0)
{
System.out.println("effective date >= current date");
}
else
{
System.out.println("effective date < current date");
}
}

public static void main(String[] args) {

Date EffectiveStartDate = new Date();
compare_Date(EffectiveStartDate);
}
}
捏造的信仰 2006-04-06
  • 打赏
  • 举报
回复
明显不是同一个类型的
jobs002 2006-04-06
  • 打赏
  • 举报
回复
看看JAVA API.............
treeroot 2006-04-06
  • 打赏
  • 举报
回复
既然都是Date类型
直接使用compareTo是可以的
roxette909 2006-04-06
  • 打赏
  • 举报
回复
Error(573,73): incompatible types; found: java.util.Date, required: java.sql.Date

这不是时间的两种类型吗?怎么转换?
wizardblue 2006-04-06
  • 打赏
  • 举报
回复
楼主我怀疑你那个客户端传过来的是String
laughsmile 2006-04-06
  • 打赏
  • 举报
回复
要实现你的目的,取当前日期不能使用简单使用dtCurrent=new Date(System.currentTimeMillis());
使用如下代码取当前日期:
Calendar now = Calendar.getInstance();
SimpleDateFormat yearAndMonth = new SimpleDateFormat("yyyy-MM-dd");
Date dtCurrent =null;
try {
dtCurrent = yearAndMonth.parse( yearAndMonth.format(now.getTime()));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然后再进行日期比较
treeroot 2006-04-06
  • 打赏
  • 举报
回复
晕,哪里有类型一样格式不同的说法?

分明都是字符串表示的日期
roxette909 2006-04-06
  • 打赏
  • 举报
回复
ding
huangdeji 2006-04-06
  • 打赏
  • 举报
回复
roxette909 2006-04-06
  • 打赏
  • 举报
回复
l楼上各位,两个变量“EffectiveDate”和“dtCurrent”都是datetime类型,但格式不同,
一个Wed Apr 05 00:00:00 CST 2006 ,一个是 2006-04-05


其中“EffectivetDate”由客户端传来,“dtCurrent”是系统当前时间,dtCurrent=new Date(System.currentTimeMillis());

我希望是:
if(EffectiveStartDate>=dtCurrent)
{
System.out.println("effective date >= current date ");
}
else
{
System.out.println("effective date < current date ");
}

Wed Apr 05 00:00:00 CST 2006 应该等于 2006-04-05
加载更多回复(13)

62,629

社区成员

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

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