FullCalendar可以更新为从webbrowser到服务器的ignoreTimeZone?

FullCalendar可以更新为从webbrowser到服务器的ignoreTimeZone?,fullcalendar,iso8601,Fullcalendar,Iso8601,我正在使用与Java Wicket webapp集成的fullcalendar 当webbrowser的时区与服务器的时区不同时,我对日期有问题 例如:Cayenne的网络浏览器(UMT-3)和巴黎的服务器(UMT+1) 我使用fullcalendar的“ignoreTimeZone=true”,因为我想将webbrowser用户的时区日历保存在数据库中 服务器初始化日历时:从巴黎发送到Cayenne的事件 服务器发送这样的事件 {“id”:“53922”,“标题”:“0123456789”,“

我正在使用与Java Wicket webapp集成的fullcalendar

当webbrowser的时区与服务器的时区不同时,我对日期有问题

例如:Cayenne的网络浏览器(UMT-3)和巴黎的服务器(UMT+1)

我使用fullcalendar的“ignoreTimeZone=true”,因为我想将webbrowser用户的时区日历保存在数据库中

服务器初始化日历时:从巴黎发送到Cayenne的事件

服务器发送这样的事件

{“id”:“53922”,“标题”:“0123456789”,“全天”:假,“开始”:“2011-01-06T09:00:00.000+01:00”}

ignoreTimeZone=true时,一切正常。我们的日历上有9点

为了验证,我使用ignoreTimeZone=false进行了测试。我已将事件正确定位在5点钟(9-4=5)

当用户单击某一天创建新事件时,问题就出现了

对于12点钟的时间,则从webbrowser发送的JSON值是正确的

全天假 日期“2011-01-07T15:00:00.000Z” “dayClick”的反馈

但如果我想从IgnoreTimeone获得等价物,我更愿意 2011-01-07T12:00:00:000-03:00格式或仅2011-01-07T12:00:00.000

有可能有这种新的可能性吗


感谢您提前回复。

我的解决方案是始终使用UNIX时间戳或UTC日期格式从客户端的完整日历中发送事件

首先,使用jQueryJSON插件从客户端发送的事件如下

var event ={"startDate" : startDate, "endDate" : endDate,"allDay" : allDay};
$.ajax({
  url : "${feedbackURL}", type: 'POST', contentType: 'application/json;charset=UTF-8'
 ,dataType: (($.browser.msie) ? "text" : "xml"), data : $.toJSON(event)
});
在$.toJSON()中序列化的事件将使用UTC fomat
格式“yyyy-MM-dd'HH:MM:ss'Z”

然后可以使用gson和jodatime解析UTC格式的日期

private static final DateTimeFormatter UTC_FORMAT = DateTimeFormat
        .forPattern("yyyy-MM-dd'T'HH:mm:ss'Z'").withZone(DateTimeZone.UTC);

public static final JsonDeserializer<Date> DATE_DESERIALIZER = new JsonDeserializer<Date>() {

    /**
     * @see org.apache.wicket.datetime.DateConverter#convertToObject(String,
     *      java.util.Locale)
     */
    @Override
    public Date deserialize(final JsonElement json, final Type typeOfT,
            final JsonDeserializationContext context)
            throws JsonParseException {
        String value = json.getAsString().replace(".000", "");
        try {
            MutableDateTime dt = UTC_FORMAT.parseMutableDateTime(value);

            return dt.toDate();
        } catch (final Exception e) {
            LOG.debug("Date parsing error", e);
            throw new ConversionException(e);
        }
    }

};
最后,从服务器进行查询,并使用UNIX时间戳将事件发送到客户端的完整日历

//Java
long toTimestamp(final Date date) {
return date.getTime() / 1000;
}

Date fromTimestamp(final long timestamp) {
return new Date(timestamp * 1000);
}
生产的JSON是这样的

[{"id":"1","title":"test1","allDay":true,"start":1299805200,"end":1299807000,"editable":false},
{"id":"2","title":"test2","allDay":false,"start":1299805200,"end":1299807000,"editable":true}]

我对javascript代码进行了更多的研究,发现这是一个添加的javascript,可以将字段日期从dayClick结构转换为ISO8601 Z格式的JSON字符串。我已经将这部分代码更改为在ISO8601中转换为时区相对+/-HH:MM,这就是我想要的。也许这不是一个好的概念,但在这个版本中,这正是我想要的。
[{"id":"1","title":"test1","allDay":true,"start":1299805200,"end":1299807000,"editable":false},
{"id":"2","title":"test2","allDay":false,"start":1299805200,"end":1299807000,"editable":true}]