Java "Integer number too large" in Date 添加计算
Java "Integer number too large" in Date adding calculation
我已经删除了与我的问题无关的代码,并留下了与我的问题相关的代码。它表示整数太大。我已将当前时间转换为毫秒,我正在尝试以毫秒为单位添加一个月、2 周和 1 周以实现 'Date Expired'。如果有人知道我将如何使用 Long 而不是 int?我很困惑,因为我的日期没有声明为整数?
它指出了 'dateExpired = dateExpired + 2628000000;' 处的错误。
public class VIP implements Serializable {
private Date dateExpired;
public VIP(Date dateExpired) {
this.dateExpired = new Date(Calendar.getInstance().getTimeInMillis());
}
public Date getDateExpired() {
return dateExpired;
}
public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = dateExpired + 2628000000;
} else if (ticketType.equals("Silver")) {
dateExpired = dateExpired + 1209600000;
} else {
dateExpired = dateExpired + 604800000;
}
}
}
在您的数字后添加标记 L
以将它们转换为 long
文字:
public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = dateExpired + 2628000000L;
} else if (ticketType.equals("Silver")) {
dateExpired = dateExpired + 1209600000L;
} else {
dateExpired = dateExpired + 604800000L;
}
}
如果没有它们 L,编译器会将它们解释为 int
文字,但是对于 int
类型来说这些值太大了。您可以使用的最大 int
值是 2147483647
(尽管在这种情况下最好不要混合类型,并且始终使用 long)。
您还会 运行 遇到添加不正确类型的问题。要么将 dateExpired 更改为 long
(稍后将其转换为 Date
),要么使用以下形式:
dateExpired = new Date(dateExpired.getTime() + 604800000L)
顺便说一句,它可能会帮助您稍后记录大数字的含义:
dateExpired = dateExpired + 86400000L; // one day
您不能将 Date 对象添加到 Long Object
使用
public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = new Date(dateExpired.getTime() + 2628000000L);
} else if (ticketType.equals("Silver")) {
dateExpired = new Date(dateExpired.getTime() + 1209600000L);
} else {
dateExpired = new Date(dateExpired.getTime() + 604800000L);
}
}
我已经删除了与我的问题无关的代码,并留下了与我的问题相关的代码。它表示整数太大。我已将当前时间转换为毫秒,我正在尝试以毫秒为单位添加一个月、2 周和 1 周以实现 'Date Expired'。如果有人知道我将如何使用 Long 而不是 int?我很困惑,因为我的日期没有声明为整数?
它指出了 'dateExpired = dateExpired + 2628000000;' 处的错误。
public class VIP implements Serializable {
private Date dateExpired;
public VIP(Date dateExpired) {
this.dateExpired = new Date(Calendar.getInstance().getTimeInMillis());
}
public Date getDateExpired() {
return dateExpired;
}
public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = dateExpired + 2628000000;
} else if (ticketType.equals("Silver")) {
dateExpired = dateExpired + 1209600000;
} else {
dateExpired = dateExpired + 604800000;
}
}
}
在您的数字后添加标记 L
以将它们转换为 long
文字:
public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = dateExpired + 2628000000L;
} else if (ticketType.equals("Silver")) {
dateExpired = dateExpired + 1209600000L;
} else {
dateExpired = dateExpired + 604800000L;
}
}
如果没有它们 L,编译器会将它们解释为 int
文字,但是对于 int
类型来说这些值太大了。您可以使用的最大 int
值是 2147483647
(尽管在这种情况下最好不要混合类型,并且始终使用 long)。
您还会 运行 遇到添加不正确类型的问题。要么将 dateExpired 更改为 long
(稍后将其转换为 Date
),要么使用以下形式:
dateExpired = new Date(dateExpired.getTime() + 604800000L)
顺便说一句,它可能会帮助您稍后记录大数字的含义:
dateExpired = dateExpired + 86400000L; // one day
您不能将 Date 对象添加到 Long Object
使用
public void setDateExpired(String ticketType) {
if (ticketType.equals("Gold")) {
dateExpired = new Date(dateExpired.getTime() + 2628000000L);
} else if (ticketType.equals("Silver")) {
dateExpired = new Date(dateExpired.getTime() + 1209600000L);
} else {
dateExpired = new Date(dateExpired.getTime() + 604800000L);
}
}