当前位置: 首页 > 知识库问答 >
问题:

从java日期中减去毫秒会产生意外结果[重复]

仲俊豪
2023-03-14
int numDaysToSubtract = 60;
Date curDate = new Date();

//subtract numdays * hours/day * mins/hour * secs/min * millisecs/sec
Date newDate = new Date(curDate.getTime() - (numDaysToSubtract * 24 * 3600 * 1000));

共有1个答案

端木存
2023-03-14

您已经溢出了要减法的毫秒数,因为乘积不适合32位整数,其最大值约为21亿(10位)。

60天的毫秒值为5184,000,000,超过了限制。由于溢出的原因,产品计算为889,032,704毫秒,或约10.2天。

NumDayStoSubtract强制转换为Long或声明其为Long以强制进行Long计算,从而避免溢出。对我来说,那是在2018年2月11日,也就是60天前。

 类似资料:
  • 我有一个由两个字段“键控”的记录流,然后分配一个间隔为30秒的会话窗口。我使用附加在记录上的“时间戳”作为事件时间。我正在使用“Assign AscendingTimeStamps”水印。 以下面的记录为例。该流由(用户,place)键控。 Record1:user1,place1,timestamp t1 Record2:user2,place1,timestamp在t1之后30秒 桶1 Rec

  • 问题内容: 我使用Java 8 LocalDate和Period类来添加和删除年,月和日。为什么在某些情况下,如果将Period添加到日期并删除相同的时间,则Java 8返回另一个日期? 为什么结果是2023-01-31而不是2023-01-30 问题答案: 为什么在某些情况下,如果将Period添加到日期并删除合理的时间,则Java 8返回另一个日期? 因为这就是日历计算的原理-几个月的长度是不

  • 我使用java 8本地日期和周期类来添加和删除年、月和日。为什么在某些情况下,如果添加周期到日期并删除相同的周期,java 8会返回另一个日期? 为什么结果是2023-01-31而不是2023-01-30

  • 我有一个用户表和一个高尔夫比赛分数表。当用户参加比赛时,他使用表格在结果表中记录分数。我想显示一个结果表,显示用户的完整列表和比赛的分数。表中有八列分数——每门课一列。我正在努力使用php代码来显示结果分数。如果一名球员已经比赛,他的得分将正确显示,但如果表中的下一名球员没有比赛,则他的得分将显示为表中高于他的球员的得分。这将在列表中继续下去,直到获得真正的分数。我试图找到答案,但没有成功。这是我

  • 对于一个类,我得到了一个由base64编码的salted sha-256散列密码组成的文件。 文件的格式为: 用户名:base64编码sha256密码:salt 我最初的想法是用base64对哈希进行解码,这样我就可以得到: 用户名:salted散列密码:salt 然后通过JTR或hashcat运行它来破解密码。 我的问题是在base64解码过程中。 我的代码看起来像: /*备选方案#1:为散列*