java - 向大纪元时间添加天数 [Java]

标签 java epoch

<分区>

大纪元时间是自 1970 年 1 月 1 日以来经过的毫秒数,因此如果我想向该时间添加 x 天,添加相当于 x< 的毫秒似乎很自然 得到结果的天数

Date date = new Date();
System.out.println(date);
// Adding 30 days to current time
long longDate = date.getTime() + 30*24*60*60*1000;
System.out.println(new Date(longDate));

它给出以下输出

Mon Dec 26 06:07:19 GMT 2016
Tue Dec 06 13:04:32 GMT 2016

我知道我可以使用 Calendar 类来解决这个问题,但只是想了解这种行为

最佳答案

这是因为 JVM 将乘法 30*24*60*1000 的值视为 Int 并且乘法结果超出 Integer 的范围它会给出结果:-1702967296 intends of 2592000000 所以它给出的日期小于当前日期

尝试下面的代码:

public class Test {
public static void main(final String[] args) {
    Date date = new Date();
    System.out.println(date);
    // Adding 30 days to current time
    System.out.println(30 * 24 * 60 * 60 * 1000); // it will print -1702967296
    long longDate = (date.getTime() + TimeUnit.DAYS.toMillis(30));
    System.out.println(TimeUnit.DAYS.toMillis(30));
    date = new Date(longDate);
    System.out.println(date);
 }
}

关于java - 向大纪元时间添加天数 [Java],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41327158/

相关文章:

java - 在 Java 中获取 xhtml 文档的 DOM

java - Spring数据存储库聚合

java - onBackPressed 添加带有抽屉导航的双击退出?

c++ - 如何将 EPOCH 时间转换为时间格式 (hh :mm)

java - 使用 StringReader 读取 String 的末尾

git - 是否可以将 git commit 设置为具有 1970 年之前的时间戳?

javascript - 如何将毫秒转换为日期(月份中的某一天)?

datetime - DB2 timestampdiff 函数返回意外结果

java - 至今年至今的纪元时间

java - 静态字段的范围是什么?