CalendarView只获得今天的活动

时间:2018-05-18 15:00:04

标签: php microsoft-graph

我正在使用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
        )

)

开始属性显然是前一个日期。

我试图更改我的查询以包含时间戳startdatetime=2018-05-18T00:00:01Z&enddatetime=2018-05-18T23:59:59Z但我仍然得到相同的结果。我已尝试将$today$tomorrow变量更改为使用UTC,因为返回的结果显示OriginalStartTimeZone为UTC,但我仍然得到相同的结果。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为应用开始/结束日期过滤器的方式存在一些不平等问题,最终会包括在开始时间结束(或从结束时间开始)的事件。

目前,解决方案似乎是在滤波器的开始时间增加1秒,并从滤波器的结束时间减去1秒。您仍然可以获得所请求日期的全天活动,但不能获得前一天或下一天的全天活动。

如果您发现无法使用此方法的情况,请告诉我们!