sách gpt4 ai đã đi

python - iCal 库可迭代特定实例的重复事件

In lại 作者:行者123 更新时间:2023-12-01 23:45:50 25 4
mua khóa gpt4 Nike

我正在寻找一个能够迭代重复发生的 iCal 事件并自动处理特定实例的库(最好是 Python,但语言并不重要)。

我正在使用的 iCal 文件包含重复事件(例如: RRULE:FREQ=WEEKLY;UNTIL=20150614;BYDAY=MO,TU,WE,TH,FR )。这些重复发生的事件有时具有特定实例:单个事件的摘要可能会更改,或者一个事件会被删除。结果是 VEVENT iCal 文件中的 s 具有类似 RECURRENCE-ID 的属性和EXDATE .

我看过的大多数 iCal 库(python-icalendar、ical.js、php iCalCreator)都会帮助您进行解析,但只会返回单独的(且未分组的)VEVENT s 适用于所有特定实例。这意味着您必须将它们与相关的 RRULE 相匹配。您自己并确定这如何影响 RRULE .

因此,我们假设一个重复发生的事件发生在周一至周五 9:00-10:00。但周五(10:00-11:00)有一个特定实例,周三有一个已删除实例。在这种情况下,我想以如下方式迭代事件:

[
{start: '2015-06-15 09:00:00', end: '2015-06-15 10:00:00'},
{start: '2015-06-16 09:00:00', end: '2015-06-16 10:00:00'},
{start: '2015-06-18 09:00:00', end: '2015-06-18 10:00:00'},
{start: '2015-06-19 10:00:00', end: '2015-06-19 11:00:00'},
]

1 Câu trả lời

Python 库 recurring-ical-events根据 RFC5455 重复展开事件。

pip install recurring-ical-events

Ví dụ:

import icalendar
import datetime
import recurring_ical_events
import urllib.request

start_date = (2019, 3, 5)
end_date = (2019, 4, 1)
url = "https://raw.githubusercontent.com/niccokunzmann/python-recurring-ical-events/master/test/calendars/recurring-events-changed-duration.ics"

ical_string = urllib.request.urlopen(url).read()
calendar = icalendar.Calendar.from_ical(ical_string)
events = recurring_ical_events.of(calendar).between(start_date, end_date)
for event in events:
start = event["DTSTART"].dt
duration = event["DTEND"].dt - event["DTSTART"].dt
print("start {} duration {}".format(start, duration))

Đầu ra:

start 2019-03-18 04:00:00+01:00 duration 1:00:00
start 2019-03-20 04:00:00+01:00 duration 1:00:00
start 2019-03-19 04:00:00+01:00 duration 1:00:00
start 2019-03-07 02:00:00+01:00 duration 1:00:00
start 2019-03-08 01:00:00+01:00 duration 2:00:00
start 2019-03-09 03:00:00+01:00 duration 0:30:00
start 2019-03-10 duration 1 day, 0:00:00
<小时>

旧答案:

Từanswer of Sven ,

dateutil.rrule声称处理 ICalendar RFC 5545 中的规则。如果您查看示例,它会提供 ngày giờ sự vật.

关于python - iCal 库可迭代特定实例的重复事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30913824/

25 4 0
Bài viết được đề xuất: java - 限制和卡住按钮不起作用,也不会生成新球(动画)
Bài viết được đề xuất: php - Yii2 ajax 验证不起作用
Bài viết được đề xuất: oracle - 从表中选择导致 pl/sql 挂起
Bài viết được đề xuất: r - 仅当查询返回少于 n_max 行时收集
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com