CalendarView получить только сегодняшние события - PullRequest
0 голосов
/ 18 мая 2018

Я работаю с графиком в PHP и создаю виджет календаря для сайта, который должен извлекать только сегодняшние события, включая события за весь день.

Все работает, однако он также извлекает события за весь день за вчерашний деньи я не могу понять, что я делаю неправильно.

$today = new DateTime( 'now', new DateTimeZone( 'America/New_York' ) );
$tomorrow = new DateTime( 'tomorrow', new DateTimeZone( 'America/New_York' ) );

$start_date = $today->format('Y-m-d');
$end_date = $tomorrow->format('Y-m-d');

$events = ms_get_data_as_json( 'calendarview?startdatetime=' . $start_date . '&enddatetime=' . $end_date . '&$orderby=start/DateTime' );

отформатированная строка запроса выводит как calendarview?startdatetime=2018-05-18&enddatetime=2018-05-19&$orderby=start/DateTime, что, по-видимому, работает правильно, однако при отправке этого запроса первый возвращаемый объект является событием на весь деньза предыдущий день.Смотрите пример выходных данных:

[0] => stdClass Object
(
    [createdDateTime] => 2018-05-18T13:30:37.8672462Z
    [lastModifiedDateTime] => 2018-05-18T13:34:25.2248155Z
    [categories] => Array
        (
        )

    [originalStartTimeZone] => UTC
    [originalEndTimeZone] => UTC
    [reminderMinutesBeforeStart] => 1080
    [isReminderOn] => 
    [hasAttachments] => 
    [subject] => Test yesterday
    [bodyPreview] => 
    [importance] => normal
    [sensitivity] => normal
    [isAllDay] => 1
    [isCancelled] => 
    [isOrganizer] => 1
    [responseRequested] => 1
    [seriesMasterId] => 
    [showAs] => free
    [type] => singleInstance
    [onlineMeetingUrl] => 
    [recurrence] => 
    [responseStatus] => stdClass Object
        (
            [response] => organizer
            [time] => 0001-01-01T00:00:00Z
        )

    [body] => stdClass Object
        (
            [contentType] => html
            [content] => 

        )

    [start] => stdClass Object
        (
            [dateTime] => 2018-05-17T00:00:00.0000000
            [timeZone] => UTC
        )

    [end] => stdClass Object
        (
            [dateTime] => 2018-05-18T00:00:00.0000000
            [timeZone] => UTC
        )

)

Свойство start явно относится к предыдущей дате.

Я пытался изменить свой запрос, чтобы включить метки времени startdatetime=2018-05-18T00:00:01Z&enddatetime=2018-05-18T23:59:59Z, но я все еще получаю те же результаты,Я пытался изменить мои $today и $tomorrow переменные для использования UTC, поскольку возвращаемый результат говорит, что OriginalStartTimeZone - это UTC, но я все равно получаю те же результаты.

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 23 мая 2018

Я думаю, что существует некоторая проблема неравенства в способе применения фильтров дат начала / окончания, и он заканчивается тем, что включает события, которые заканчиваются во время начала (или начинаются в время окончания).

На данный момент кажется, что решение состоит в том, чтобы добавить 1 секунду ко времени начала фильтра и вычесть 1 секунду из времени окончания фильтра.Вы по-прежнему будете получать события на весь день для запрошенной даты, но не события на весь день за предыдущий или следующий день.

Сообщите нам, если вы найдете ситуации, которые не работают с этим методом!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...