Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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 SmartGwt:将日期添加到日期_Java_Date_Gwt_Smartgwt - Fatal编程技术网

Java SmartGwt:将日期添加到日期

Java SmartGwt:将日期添加到日期,java,date,gwt,smartgwt,Java,Date,Gwt,Smartgwt,如何在SmartGwt中为日期添加天数。我发现并发现我可以使用CalendarUtil.addDaysToDate(dateToAddTo,daysToAddToDateAsInteger))但是addDaysToDate()是静态无效的。如果一个方法不返回任何内容,那么它可以“向日期添加天数”,这有什么意义 我如何使用这个方法?我想做这样的事 Date newDate = dateToAddTo + daysToAddToDate; 这是我的代码的简化版本 if (listGridRecor

如何在SmartGwt中为日期添加天数。我发现并发现我可以使用
CalendarUtil.addDaysToDate(dateToAddTo,daysToAddToDateAsInteger))但是
addDaysToDate()
是静态无效的。如果一个方法不返回任何内容,那么它可以“向日期添加天数”,这有什么意义

我如何使用这个方法?我想做这样的事

Date newDate = dateToAddTo + daysToAddToDate;
这是我的代码的简化版本

if (listGridRecord.getAttribute("expirationDays") != null) {
    CalendarUtil.addDaysToDate((Date) endDate.getValue(), Integer.parseInt(listGridRecord.getAttribute("expirationDays")));

    listGridRecord.setAttribute("expirationDate", (Date) endDate.getValue());
} else {
    listGridRecord.setAttributeAsJavaObject("expirationDate", null);
}

这里有一个链接,指向此方法更改作为参数传递的对象

Date date = new Date();
long checkBeforeChange = date.getTime();
CalendarUtil.addDaysToDate(date, 1);
long checkAfterChange = date.getTime();
if(checkBeforeChange != checkAfterChange)
    Window.alert("It works ;)");
您的代码应该是这样的:

if (listGridRecord.getAttribute("expirationDays") != null) {
    Date tmpDate = endDate.getValue();
    CalendarUtil.addDaysToDate(tmpDate, Integer.parseInt(listGridRecord.getAttribute("expirationDays")));
    listGridRecord.setAttribute("expirationDate", tmpDate);
} else {
    listGridRecord.setAttributeAsJavaObject("expirationDate", null);
}

在执行
(Date)endDate.getValue()时,您将获得
日期
对象的副本,因此您看不到任何更改。

在@Adam的帮助下,我发现了我做错了什么。我创建了一个名为expireationDate的新日期变量,并将其设置为(Date)endDate.getValue();在这之后,我用它来做计算

if (listGridRecord.getAttribute("expirationDays") != null) {
    Date expirationDate = (Date) endDate.getValue();
    CalendarUtil.addDaysToDate(expirationDate, Integer.parseInt(listGridRecord.getAttribute("expirationDays")));

    listGridRecord.setAttribute("expirationDate", expirationDate);
} else {
    listGridRecord.setAttributeAsJavaObject("expirationDate", null);
}

首先,您可以将所有需要的实用程序方法包装在自己的实用程序类(私有构造函数)中,其中例如MyDateUtilsClassName.addDays(Date,int)将返回新实例,而不修改参数

说到日期操作,在Gwt中,您可以使用标准的java.util.Date方法,甚至是那些不推荐使用的方法,如setMinutes、setHours等。即使您看到com.google.Gwt.user.datepicker.client.CalendarUtil方法,它们也在那里使用


如果不是服务器端,而是客户端,那么您不应该太在意这些方法中的@Deprecated。无论如何,Gwt都会将它们编译成javascript。您应该了解java.util.Calendar。据我记忆所及,它根本不受支持。

我有这个想法,在上面的代码前后检查了dateToAddTo,它似乎没有改变。我会再次检查我是否错了。请记住,您不应该在更新之前和之后比较对象(引用)。您应该检查对象的值。只需在更新前后检查
date.getTime()
。谢谢,我会检查的。也许这就是我上次犯的错误。我只是尝试了一下,现在我有一个错误:
类型dateToAddTo的getTime()方法未定义。有一个.getValue()方法我可以使用,但在我尝试之后,日期仍然没有改变。