zoukankan      html  css  js  c++  java
  • Date工具遇到的一个坑

        private Date contractBeginDate(){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            calendar.add(Calendar.DATE,1);
            calendar.set(Calendar.HOUR,0);
            calendar.set(Calendar.MINUTE,0);
            calendar.set(Calendar.SECOND,0);
            calendar.set(Calendar.MILLISECOND,0);
    //        calendar.set(Calendar.AM,0);
            return calendar.getTime();
        }
    
        private Date contractEndDate(Date beginDate){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(beginDate);
            calendar.add(Calendar.YEAR,1);
            return calendar.getTime();
        }
    
    calendar.set(Calendar.AM,0);
    这一句会导致 代码并不是加1年 反而是减一年

    测试代码:
       @Test
        public void testEndDate(){
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date tomer = contractBeginDate();
            Date endDate = contractEndDate(tomer);
            Date yearLater = contractEndDate(new Date());
    
            System.out.println(format.format(new Date()));
            System.out.println(format.format(tomer));
            System.out.println(format.format(endDate));
            System.out.println(format.format(yearLater));
        }
    
        private Date contractEndDate(Date beginDate){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(beginDate);
            calendar.add(Calendar.YEAR,1);
            return calendar.getTime();
        }
    
        private Date contractBeginDate(){
            Calendar calendar = Calendar.getInstance();
            calendar.setTime(new Date());
            calendar.add(Calendar.DATE,1);
            calendar.set(Calendar.HOUR,0);
            calendar.set(Calendar.MINUTE,0);
            calendar.set(Calendar.SECOND,0);
            calendar.set(Calendar.MILLISECOND,0);
            calendar.set(Calendar.AM,0);
            return calendar.getTime();
        }


    输出的结果:

    2019-10-15 09:47:49
    2019-10-16 00:00:00
    2018-10-16 00:00:00
    2020-10-15 09:47:49

    并不是预期的

    需要注意

    删除这一行 就正常预期的

    calendar.set(Calendar.AM,0);
  • 相关阅读:
    Python PyInstaller安装和使用教程(搬来的,嘻嘻)
    python 注册码永久性方法
    网上搬来的常用工具
    Pycharm控制台窗口怎样可以显示不同程序的运行结果
    php时间:获取上一个月,本月天数,下一个月
    thinkphp5 --接口实例
    浅谈 PHP 与手机 APP 开发
    php 对象的调用和引入
    php 超全局变量(整理)
    php 全局变量和超全局变量
  • 原文地址:https://www.cnblogs.com/Jordandan/p/11675780.html
Copyright © 2011-2022 走看看