关于java时间比较

其实比较两个时间的大小是很好弄的 date.before() date.after() 或者直接转化为毫秒数date.getTime() 再比较都行 ,但是对于不那么精确的比较就不能这样弄。

上午碰到一个问题:

判断两个时间是否在同一天

一个是当前时间currentDate 用已过时的Date方法  首设置currentDate.setHour(0);currentDate.setMinutes(0);currentDate.setSeconds(0) 。

一个是数据库拿出来的时间sqlDate格式为2013-01-06 00:00:00.0。

然后很傻很天真的用 if(currentDate.compareTo(sqlDate)==0){...} 结果没有执行if里面内容,DEBUG以后知道 比较的是毫秒数

然后用  if(sqlDate.getYear()==currentDate.getYear() &&sqlDate.getMonth()==currentDate.getMonth()&&sqlDate.getDay()==currentDate.getDay()){...}
然后执行了if里面的内容 但是大家都知道Date.getYear(),Date.getMonth(),Date.getDay()都是已经过时的方法,是不建议使用的,但是我不了解到底会带来什么样的隐患,通过查看源码得知

/**
     * Returns a value that is the result of subtracting 1900 from the
     * year that contains or begins with the instant in time represented
     * by this <code>Date</code> object, as interpreted in the local
     * time zone.
     *
     * @return  the year represented by this date, minus 1900.
     * @see     java.util.Calendar
     * @deprecated As of JDK version 1.1,
     * replaced by <code>Calendar.get(Calendar.YEAR) - 1900</code>.
     */
    @Deprecated
    public int getYear() {
        return normalize().getYear() - 1900;
    }
用这个方法获取年份时是从1900年开始计算的,因此当年份为2009时,得到的结果为109,所以如果要得到最终的年份,要再加上1900。

而替代过时方法的方案如下:

Calendar calendar =Calendar.getInstance();
  calendar.setTime(downTime);
  calendar.get(Calendar.YEAR);
通过实验得知拿到的就是当前的年份

最后的结论是 如果是两个时间比较 上述两种方法都可以,如果是和字符串比较就要小心了,最好是不要用过时的方法。

(ps:在网上找资料时候看到有人发帖说js里用date,getYear()有时候拿不到正确的时间,他分析的原因是有的浏览器不支持,建议使用getFullYear(),有待验证)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值