美文网首页
时间类型加减中遇到的问题

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

作者: AnyL8023 | 来源:发表于2017-10-12 15:18 被阅读0次

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

当时我第一个反应就是通过获取到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));

相关文章

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

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

  • pandas中关于DataFrame计算时间差(加减)

    Dataframe中的时间是不能直接进行相加减的。如果将两列时间进行加减,会弹出类型错误: 所以需要先用panda...

  • datetime库时间类型加减

    from datetimeimport datetimea=datetime.now()#获取当前时间b=inpu...

  • LeetCode之Clumsy Factorial(Kotlin

    问题: 方法:根据余数判断当前使用的操作符,因为加减的优先级最低,所以遇到加减操作可以直接操作,遇到乘除操作需要先...

  • 利用js将时间戳转换为String类型输出

    背景: 实际开发中,遇到需要获得数据库中时间戳对应的时间以String类型输出的问题,当时直接输出时间戳返回的是一...

  • JS中怎样使用Date对象加减日期

    这一周工作主要是写js,遇到使用JS加减时间的问题,觉得需要总结记录一下。为了下次遇到这种问题时查阅方便,也为了更...

  • Oracle中的日期玩法

    一、日期相关的内容1.在Oracle中,date类型可以直接进行加减天数,而加减月份要用add_months函数:...

  • 小数加减法宝典(上)

    我是一个五下的学生,在学习小数加减这个过程中呢,会遇到许多问题,就像计算算不好,容易算错这样的问题。当然我...

  • JS中Float类型加减乘除

    //浮点数加法运算 functionFloatAdd(arg1,arg2){ var r1,r2,m; try{r...

  • Gson转换异常 2020-04-26

    今天,在开发中遇到一个问题Gson在反序列化的时候,遇到long类型的时间就会抛出出一个错误,经过查阅资料和请教大...

网友评论

      本文标题:时间类型加减中遇到的问题

      本文链接:https://www.haomeiwen.com/subject/twxoyxtx.html