Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇语;“整数太大”;在日期添加计算中_Java_Date_Integer - Fatal编程技术网

Java 爪哇语;“整数太大”;在日期添加计算中

Java 爪哇语;“整数太大”;在日期添加计算中,java,date,integer,Java,Date,Integer,我已经取出了与我的问题无关的代码,并留下了与我的问题相关的代码。这表示整数太大。我已将当前时间转换为毫秒,我正在尝试以毫秒为单位添加一个月、两周和一周,以实现“过期日期”。如果有人知道我将如何使用Long而不是int?我很困惑,因为我的日期没有被声明为整数 它在“dateExpired=dateExpired+2628000000;”处声明错误 public class VIP implements Serializable { private Date dateExpired;

我已经取出了与我的问题无关的代码,并留下了与我的问题相关的代码。这表示整数太大。我已将当前时间转换为毫秒,我正在尝试以毫秒为单位添加一个月、两周和一周,以实现“过期日期”。如果有人知道我将如何使用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;
    }
}
如果没有它们,编译器将它们解释为
int
文本,但是对于
int
类型来说,这些值太大。您可以使用的最大
int
值是
2147483647
(不过最好不要在这种情况下混合使用类型,只需在整个过程中使用long)

您还将遇到添加错误类型的问题。将dateExpired更改为
(并将其转换为
日期
),或使用以下表格:

dateExpired = new Date(dateExpired.getTime() + 604800000L) 
顺便说一句,它可能会帮助您以后记录大数字的含义:

dateExpired = dateExpired + 86400000L; // one day

不能将日期对象添加到长对象

使用


错误发生在哪一行?如果您使用java 8,您可以在java中查看LocalDate。正
int
不能大于2147483647。请在提问之前进行一些研究。您不能添加日期和整数…您好,谢谢您的回复。它现在声明“二进制运算符“+”的操作数类型错误”。第一种是日期,第二种是长的。我应该多加评论才对。我想这会避免以后的混乱。谢谢。是的,现在的问题是你要在一个长长的约会中加入一个日期。您只需选择使用Date还是long来表示您的价值(我自己选择使用
long
),并相应地更改代码(我已将该部分添加到我的答案中)非常感谢。Netbeans现在已经停止给我发短信了!我将来会知道这一点的。再次感谢。
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);
    }
}