Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 完整日历时区不修改客户端上的时间';终点_Javascript_Php_Fullcalendar - Fatal编程技术网

Javascript 完整日历时区不修改客户端上的时间';终点

Javascript 完整日历时区不修改客户端上的时间';终点,javascript,php,fullcalendar,Javascript,Php,Fullcalendar,我经历了一个令人沮丧的问题,我整晚都在处理这个问题。长话短说,如果纽约有人在下午2点创建活动,我希望该活动显示为晚上8点,供在欧洲查看日历的人观看(比方说,他们提前了6个小时) 我的完整日历配置如下所示: function renderSchedule(timezone) { var userSchedule = $('#user-schedule').fullCalendar({ header: { left: 'pre

我经历了一个令人沮丧的问题,我整晚都在处理这个问题。长话短说,如果纽约有人在下午2点创建活动,我希望该活动显示为晚上8点,供在欧洲查看日历的人观看(比方说,他们提前了6个小时)

我的完整日历配置如下所示:

  function renderSchedule(timezone) {
     var userSchedule = $('#user-schedule').fullCalendar({
             header: {
                 left: 'prev,next today',
                 center: 'title',
                 right: 'month,agendaWeek,agendaDay'
             },
             timezone: timezone,
             ignoreTimezone: false,
             events: baseurl + "load_schedule",
             editable: true,
             defaultView: 'agendaWeek',
             firstHour: 8,
             allDayDefault: false
         }
         mysite.com / my_page / load_schedule ? start = 2014 - 02 - 02 & end = 2014 - 02 - 09 & timezone = Europe % 2FChisinau & _ = 1391660233815 
我有更多的选择,但这些应该足以解决这个问题。正如文档中提到的,fullcalendar通过GET传递URL,如下所示:

  function renderSchedule(timezone) {
     var userSchedule = $('#user-schedule').fullCalendar({
             header: {
                 left: 'prev,next today',
                 center: 'title',
                 right: 'month,agendaWeek,agendaDay'
             },
             timezone: timezone,
             ignoreTimezone: false,
             events: baseurl + "load_schedule",
             editable: true,
             defaultView: 'agendaWeek',
             firstHour: 8,
             allDayDefault: false
         }
         mysite.com / my_page / load_schedule ? start = 2014 - 02 - 02 & end = 2014 - 02 - 09 & timezone = Europe % 2FChisinau & _ = 1391660233815 
然后,在后端,我将执行以下操作,从
MYSQL-datetime
转换为
ISO8601

$start = ($event['start']); 
$end = ($event['end']); 
$dateStart = new DateTime($start, new DateTimeZone($timezone)); 
$dateEnd = new DateTime($end, new DateTimeZone($timezone)); 
$dateStart - > setTimezone(new DateTimeZone($timezone)); 
$dateEnd - > setTimezone(new DateTimeZone($timezone)); 
$event['start'] = $dateStart - > format(DateTime::ISO8601); 
$event['end'] = $dateEnd - > format(DateTime::ISO8601); 
$newResult[] = $event;
$timezone
变量包含
Europe/Chisinau
,当然这是fullcalendar本身传递的

下面是上面返回到fullcalendar的内容:

[{"id":"5","start":"2014-02-06T14:10:00+0200","end":"2014-02-06T15:00:00+0200","title":"My title"}]
一切似乎都是正确的,但无论我尝试了什么,下午2点的活动都会显示出来

注意这很重要,我还没有提到这一点,但我正在将我选择的时区传递给
renderSchedule
函数。因此,即使我位于美国东海岸,我也希望能够通过欧洲时区,并相应地渲染日历

另外,我应该指出,我正在使用beta版(2.0),它允许传递时区字符串(我正在这样做),并通过


你知道我做错了什么吗?

我在演示中就可以让它工作了。我更新了您的日期格式,以包含用于偏移的冒号。此外,fullcalendar 1.6.4的最新稳定版本没有时区变量

$('#calendar').fullCalendar({
        editable: true,
        header : {
            left:"prev,next",
            center:"title",
            right:"month,basicWeek,agendaWeek,basicDay,agendaDay"
            },
        ignoreTimezone: false,
        events: [
        {
            start: "2014-02-06T14:10:00+02:00",
            end:"2014-02-06T15:00:00+02:00",
            title:"My title",
            allDay: false
        }
});
如果您使用的是beta版本2.0,那么您需要删除ignoreTimezone,因为这不再是一个参数

最新答复: 事实证明,问题在于后端如何处理日期。下面是我如何解决这个问题的

date_default_timezone_set($timezone);
            $timestampStart = strtotime($mysql_start_date);
            $timestampEnd = strtotime($mysql_end_date);
            $local_time_start = $timestampStart + date('Z');
            $local_time_end = $timestampEnd + date('Z');
            $local_date_start = date('Y-m-d H:i:s', $local_time_start);
            $local_date_end = date('Y-m-d H:i:s', $local_time_end);

            $event['start'] = $local_date_start;
            $event['end'] = $local_date_end;

我使用的是支持时区并使用moment.js的beta版本,在这种情况下,ignoreTimezone默认设置为false,并且您的时区参数应该是“timezoneParam”vs“timezone”。您在中看过演示吗?我认为您无法更改ignoreTimezone的值,因为它在2.0中不存在。看一看。嗨,谢谢你的跟进,我真的很感激。我确实看到了那个演示,但是在那个演示中他们使用了“timezone”参数,你仍然建议我将其更改为
timezoneParam
?我只是仔细检查了文档,并且timezoneParam仅在事件中指定。时区参数应该有效。您是否尝试将“:”添加到偏移中?