1

我正在使用 primefaces 3.5 版和 p:schedule Control

我在事件“eventMove”上的日期错误。

我的代码片段如下

托管 Bean 类 ScheduleController 内部

public void onEventMove(ScheduleEntryMoveEvent scheduleEntryMoveEvent)
{
      Expense exp = (Expense) scheduleEntryMoveEvent.getScheduleEvent()
            .getData();
      System.out.println("Expense Date="+exp.getDate())
}

和费用类如下 import java.util.Date;

public class Expense
{
    private Date date;
    public Date getDate()
    {
        return date;
    }
    public void setDate(Date date)
    {
        this.date = date;
    }
}

用于在计划中存储费用

   public ScheduleController()
   {
         allExpenses = expensePeer.getList();
         for (Expense expense : allExpenses)
         {
                  eventModel.addEvent(new DefaultScheduleEvent(expense
                .getDescription(), expense.getDate(), expense.getDate(),
                expense));
         }
   }

当我点击 8 月 15 日并将日程安排事件(在我的情况下为费用)X 移动到 8 月 16 日时,输出为 8 月 17 日,预期输出为 8 月 16 日。

其他一些动作正在紧随其后

从 15 移动到 14 ,预期 14 ,得到 13

从 13 移动到 10 ,预期 10,得到 7

从 7 移动到 12,预期 12,得到 17

4

1 回答 1

1

在更新日期之前试试这个

   public void onEventMove(ScheduleEntryMoveEvent scheduleEntryMoveEvent)
   {
      Expense exp = (Expense) scheduleEntryMoveEvent.getScheduleEvent()
        .getData();
      System.out.println("Expense Date Before="+exp.getDate())
      java.util.Calendar newCal = new GregorianCalendar();
      newCal.setTime(exp.getDate());
      newCal.add(Calendar.DATE, (-1 * scheduleEntryMoveEvent.getDayDelta()));
      newCal.add(Calendar.MINUTE, (-1 * scheduleEntryMoveEvent.getMinuteDelta()));
      exp.setDate(newCal.getTime());
      System.out.println("Expense Date After="+exp.getDate());
   }
于 2013-08-24T13:39:28.147 回答