Friday, June 4, 2010

Java日期比较的一个陷阱

昨天在调试程序中,碰到一个问题,简化叙述如下
c是个Calendar对象,d是个Date,程序要判断c是否在d之后,判断条件用了
c.after(d)
当打印出来的时候,c的确是在d之后的,但以上条件却总是不成立。

仔细看了JavaDoc后,发现Calendar类的after方法虽然接受所有类型,但只有参数同是Calendar对象的时候日期比较才有意义。否则一律返回假。

解决办法也很简单,其实Date类也有after函数。只要把c转为Date类即可。
c.getTime().after(d)
这样就可以了。

No comments:

Post a Comment