SmartGwt:添加天数

时间:2015-09-30 16:10:37

标签: java date gwt smartgwt

如何在SmartGwt中添加日期到日期。我找到this question并发现我可以使用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);
}

以下是javadocs

的链接

3 个答案:

答案 0 :(得分:1)

此方法更改作为参数传递的对象。

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()时,您会收到Date个对象的副本,因此您不会看到任何更改。

答案 1 :(得分:0)

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

brew doctor

答案 2 :(得分:0)

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

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

如果它不是服务器端,而是客户端,那么你应该不关心那些方法的@Deprecated。无论如何,Gwt将它们编译为javascript。你应该知道java.util.Calendar。据我记忆,它根本不受支持。