我已经为我的问题取出了不相关的代码,并留下了与我的问题相关的内容。它表明整数太大了。我已将当前时间转换为毫秒,我试图以毫秒为单位添加一个月,两周和一周来实现“过期日期”。如果有人知道如何使用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;
}
}
}
答案 0 :(得分:6)
在您的号码后添加令牌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;
}
}
如果没有它们,编译器会将它们解释为int
文字,但这些值对于int
类型来说太大了。您可以使用的最大int
值是2147483647
(尽管最好不要在这种情况下混合使用类型,并且只使用长整数。)
您还会遇到添加错误类型的问题。将dateExpired更改为long
(稍后将其转换为Date
),或使用此表单:
dateExpired = new Date(dateExpired.getTime() + 604800000L)
暂且不说,以后可能会帮助您记录大数字的含义:
dateExpired = dateExpired + 86400000L; // one day
答案 1 :(得分:1)
您无法将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);
}
}