时间类型加减中遇到的问题

时间延期的功能是一个非常简单也是一个很常见的一个功能,实现的方法有很多,我只是记录了我愚蠢的错误,和大家共勉。

当时我第一个反应就是通过获取到Date类型对象的时间戳,加上要增减的时间戳就完事了,就是像这个样子。

int delay = 1;
Date now = new Date();
long time = now.getTime()+delay*24*60*60*1000;
System.out.println(now);
System.out.println(new Date(time));

结果为:

Thu Oct 12 15:07:25 CST 2017
Fri Oct 13 15:07:25 CST 2017

在数字比较小的时候确实挺正常,但是,测试跑来说我这里会延期了30天却反而提前了。
以下是delay取30时的结果:

Thu Oct 12 15:08:50 CST 2017
Fri Sep 22 22:06:03 CST 2017

嘿,确实有点问题,在一阵debug之后发现了错误的原因,看了以下代码就明白了。

int delay = 30;
System.out.println(delay*24*60*60*1000);
System.out.println(delay*24*60*60*1000l);
System.out.println(Integer.MAX_VALUE);
-1702967296
2592000000
2147483647

这里需要加的时间戳超出了Integer的最大的值,所以,我在这里犯了一个很愚蠢的错误。
改为以下代码就可以了

int delay = 30;
Date now = new Date();
long time = now.getTime()+delay*24*60*60*1000l;
System.out.println(new Date(time));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,397评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,159评论 19 139
  • 教程一:视频截图(Tutorial 01: Making Screencaps) 首先我们需要了解视频文件的一些基...
    90后的思维阅读 10,311评论 0 3
  • 九月,是一个多雨的季节 ! 九月,也是一个有梦的季节 ! 风云尽情潇洒,唯有细雨独自飘零,正是因为这份孤独...
    悲伤的延续阅读 1,508评论 0 2
  • “对不起,我不知道原来在一开始,你就给予了一份最好的礼物给我。”一个女孩独自伤心着她想对一个男孩说,在那个完全不懂...
    糖屿浆阅读 2,372评论 0 0

友情链接更多精彩内容