完整日历"时区演示"实施例

时间:2016-08-09 15:47:40

标签: javascript java mysql timezone fullcalendar

我试图从这个例子中学习:

http://fullcalendar.io/js/fullcalendar-2.9.1/demos/timezones.html

请同时右键单击网页以查看页面来源。

现在唯一不起作用的部分如下:

        // when the timezone selector changes, dynamically change the calendar option
        $('#timezone-selector').on('change', function() {
            $('#calendar').fullCalendar('option', 'timezone', this.value || false);
        });

它正在尝试根据不同时区的选择更改日历时间显示。

我不是Javascript的专家,并试图找到FullCalendar的解释,但没有运气。

我的问题:

1)什么可以" this.value"可能意味着? " ||假"

2)在我的Web应用程序的后端,我使用带有hibernate 3.6的Java web servlet。对于时间输入(开始时间和结束时间),我使用Java 8中的LocalDateTime并将其作为UTC时间戳存储在MySQL中。不确定这是否是基于日历的调度程序的最佳实践?

3)目前,我还没有将timezoneId附加到数据库中存储的时间戳。但我已经为FullCalendar示例创建了一个供用户选择的列表。关于在不同时区存储和稍后使用timezoneId进行此日历显示的最佳方式的任何建议?

目前,我认为试图完全模仿FullCalendar的例子并不是很实用,因为我的数据库与他们的数据库不同。我对如何从他的选择中获取用户的当前时区,将其存储在数据库中以及稍后根据用户在其日历视图页面上选择的任何时区显示正确的时间值提出任何好的建议。

1 个答案:

答案 0 :(得分:2)

如果您检查时区选择,您可以看到每个选项都有一个值。 this.value表示on change函数将获取所选选项的值以指定为时区。至于存储您的时间,它们应该像您一样存储为UTC时间戳。为了检索时区,我使用jstz来获取用户时区,就像这两行一样简单。

var tz = jstz.determine();
var timezone = tz.name();

这很棒,因为你不必向用户询问他们的时区。然后当我在数据库中查询我在时区中传递的事件时

events: {
    url: "calendarManager.php?request=get&timezone=" + timezone + "&userid=" + userID
},

并使用php将utc转换为用户本地时区并返回json编码的事件。