Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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
Date 计算未来几周的活动数量_Date_Calendar_Applescript - Fatal编程技术网

Date 计算未来几周的活动数量

Date 计算未来几周的活动数量,date,calendar,applescript,Date,Calendar,Applescript,我需要计算下几个星期的活动数量。但我的方法太慢(工作时间超过1.5小时)。如何加快这个脚本的速度?目前,我在每个weekNumber中每次都会获得日历中的所有事件。。。这很慢,但我不知道如何才能只获取一次所有事件,并为每个事件设置周数 tell application "Calendar" set theCalendars to name of calendars repeat with theCalendar in theCalendars set lis

我需要计算下几个星期的活动数量。但我的方法太慢(工作时间超过1.5小时)。如何加快这个脚本的速度?目前,我在每个
weekNumber
中每次都会获得日历中的所有事件。。。这很慢,但我不知道如何才能只获取一次所有事件,并为每个事件设置周数

tell application "Calendar"

    set theCalendars to name of calendars

    repeat with theCalendar in theCalendars

        set listCurrentCalendar to {}
        set end of listCurrentCalendar to theCalendar

        repeat with weekNumber from 1 to 13
            set currentWeekMonday to my DateOfThisInstanceOfThisWeekdayBeforeOrAfterThisDate(current date, Monday, weekNumber)
            set nextWeekMonday to my DateOfThisInstanceOfThisWeekdayBeforeOrAfterThisDate(current date, Monday, weekNumber + 1)

            set numberOfEvents to 0
            set TheEvents to events of calendar theCalendar
            repeat with anEvent in TheEvents

                set eventStartDate to start date of anEvent
                if eventStartDate ≥ currentWeekMonday and eventStartDate ≤ nextWeekMonday then
                    set numberOfEvents to numberOfEvents + 1
                end if
            end repeat

            set end of listCurrentCalendar to numberOfEvents
        end repeat

        set end of listData to listCurrentCalendar
    end repeat

end tell

以下是一个为期两周的示例:

set myEvents to {}

tell application "iCal"
    set myCalendars to calendars
    repeat with aCalendar in myCalendars
        set calEvents to (every event of aCalendar whose start date > (current date) and end date < ((current date) + (2 * weeks)))
        if calEvents ≠ {} then set myEvents to myEvents & calEvents
    end repeat
end tell
将myEvents设置为{}
告诉应用程序“iCal”
将myCalendars设置为日历
在myCalendars中使用aCalendar重复此操作
将calEvents设置为(开始日期>(当前日期)和结束日期<((当前日期)+(2*周))的aCalendar的每个事件)
如果加热炉≠ {}然后将myEvents设置为myEvents&calEvents
结束重复
结束语