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