结束日期的计算时间早于开始日期
Date startDate = new Date();
Date endDate = new Date(startDate.getTime() + (24 * 3600000 * 42));
System.out.println(startDate);
System.out.println(endDate);
Run Code Online (Sandbox Code Playgroud)
输出:
Tue Sep 17 01:46:31 EEST 2013
Mon Sep 09 08:43:43 EEST 2013
Run Code Online (Sandbox Code Playgroud)
为什么输出不正确?
rge*_*man 10
您的整数运算已溢出.a的最大可能值int是2147483647或Integer.MAX_VALUE(稍微超过20亿),但乘以整数文字将产生3628800000(约36亿).结果是负数(-666167296)和更早的日期.
尝试将您的一个文字long强制转换为强制long算术(或使用long文字):
( (long) 24 * 3600000 * 42)
Run Code Online (Sandbox Code Playgroud)
要么
(24L * 3600000 * 42)
Run Code Online (Sandbox Code Playgroud)
此操作完全在long值范围内(最大值9223372036854775807,超过9 quintillion).
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |