`
atell
  • 浏览: 158966 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Java日期处理的怪异问题

阅读更多
        // 结束时间要大于等于当前时间
        Date date1 = simpleDateFormat.parse("2011-07-14 19:32");// 设置为当前这一分钟的时间
        Date date2 = simpleDateFormat.parse("2011-07-14 19:32");// 设置为当前这一分钟的时间
        System.out.println(date1);// Thu Jul 14 19:32:00 CST 2011
        System.out.println(date2);// Thu Jul 14 19:32:00 CST 2011
        System.out.println(date1.after(date2));// false(这是合理的)
        System.out.println(date2.before(date1));// false(这是合理的)

        Calendar now = Calendar.getInstance();
        now.set(Calendar.SECOND, 0);// 当前时间,不精确到秒
        System.out.println(date1);// Thu Jul 14 19:32:00 CST 2011
        System.out.println(now.getTime());// Thu Jul 14 19:32:00 CST 2011
        System.out.println(date1.after(now.getTime()));// false(这是合理的)
        System.out.println(date1.before(now.getTime()));// true(这是不合理的)


        // 我的目的是要允许提交一个时间(忽略秒),它大于等于当前时间(忽略秒)。
        // 使用Calendar虽然能把秒去除,但与Date比较,java的实现有问题,故不使用Calendar。所以还是使用Date。
        // 由于时间比较时只精确到分钟,所以直接与当前时间比较,则endDate和当前时间在同一分支内时,endDate.before(now)为true,仍然创建失败。
        // 所以才会设置now=System.currentTimeMillis()-60000,以把当前时间减少60秒,之后再比较
        Date date = new Date(System.currentTimeMillis() - 60000);// 当前时间的前一分钟
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics