向 Java 日期添加毫秒,此时毫秒很长

2022-09-01 16:50:41

我正在寻找在毫秒存储为“长”时向Java日期添加毫秒的最佳方法。Java日历有一个add函数,但它只接受一个“int”作为金额。

这是我提出的一个解决方案...

Calendar now = Calendar.getInstance();
Calendar timeout = Calendar.getInstance();

timeout.setTime(token.getCreatedOn());
timeout.setTimeInMillis(timeout.getTimeInMillis() + token.getExpiresIn());

还有其他建议吗?


答案 1

实际上,您的解决方案对我来说看起来几乎没问题。我最初通过发布了一个答案,当时我没有正确考虑和考虑。DategetTimeInMillissetTimeInMillis

但是,您正在打电话,然后这对我来说似乎有些多余。您的代码看起来等效于:setTimesetTimeInMillis

Calendar timeout = Calendar.getInstance();
timeout.setTimeInMillis(token.getCreatedOn().getTime() + token.getExpiresIn());

一个通常更好的选择是使用Joda Time,尽管:)它通常是一个更好的日期/时间API。


答案 2

您还可以使用当前本地日期以及需要添加的毫秒数创建一个日期,作为“过期时间”

import java.util.Date;

long expiremilis = 60000l; //  1 minute
// Expires in one minute from now
Date expireDate = new Date(System.currentTimeMillis() + expiremilis);

或者与日历相同

long expiremilis = 60000l; // 1 minute
Calendar expireDate= Calendar.getInstance();
// Expires on one minute from now
expireDate.setTimeInMillis(System.currentTimeMillis() + expiremilis);

如果使用现有的 Date 对象,则可以执行以下操作:

import java.util.Date;

long expiremilis = 60000l; // 1 minute
// Expires on one minute from the date object date
Date expireDate = new Date(myDate.getTime() + expiremilis);

以及使用现有日历对象

long expiremilis = 60000l; // 1 minute
Calendar expireDate= Calendar.getInstance();
// Expires on one minute from the calendar date
expireDate.setTimeInMillis(myCalendar.getTimeInMillis() + expiremilis);