Macos 如何从条目数据库中创建iCal日历的时间范围?

Macos 如何从条目数据库中创建iCal日历的时间范围?,macos,perl,calendar,metaprogramming,icalendar,Macos,Perl,Calendar,Metaprogramming,Icalendar,我有一些Perl脚本,我正在使用它来抓取日历事件。我有一个事件数据库,现在我想把它们处理成一个iCal文件。我打开大学的学术日历,得到了以下信息: BEGIN:VCALENDAR CALSCALE:GREGORIAN X-WR-TIMEZONE;VALUE=TEXT:America/Los_Angeles PRODID:-//MMISoftware\, //MMISoftware//EN X-WR-CALNAME;VALUE=TEXT:spring14cal X-WR-RELCALID;VALU

我有一些Perl脚本,我正在使用它来抓取日历事件。我有一个事件数据库,现在我想把它们处理成一个iCal文件。我打开大学的学术日历,得到了以下信息:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
X-WR-TIMEZONE;VALUE=TEXT:America/Los_Angeles
PRODID:-//MMISoftware\, //MMISoftware//EN
X-WR-CALNAME;VALUE=TEXT:spring14cal
X-WR-RELCALID;VALUE=TEXT:87FB4C57-1D7B-4B80-B200-AEED845CB3AF
VERSION:2.0
BEGIN:VEVENT
SEQUENCE:1
UID:41D26C6E-965B-4BFB-AEC0-F1614074A4AF
DTSTAMP:20140127T111052Z
DTSTART;VALUE=DATE:20140101
SUMMARY:FAFSA
DESCRIPTION:First day to obtain FAFSA financial aid applications for 201
 4-15 academic year online at http://www.fafsa.ed.gov
DURATION:P1D
END:VEVENT
BEGIN:VEVENT
SEQUENCE:1
UID:DFE257FB-F475-43C2-9AEB-569EC4BA321D
DTSTAMP:20140127T111052Z
DTSTART;VALUE=DATE:20140106
SUMMARY:CA Dream
DESCRIPTION:First day to obtain California Dream Act financial aid appli
 cations for 2014-15 academic year online at https://dream.csac.ca.gov
.
.
.
.
我看到了开始日期、结束日期和时间戳,但没有看到范围。。。不知道如何使用我现有的数据库创建一个iCal文件——你知道,元编程——时间范围如下:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
X-WR-TIMEZONE;VALUE=TEXT:America/Los_Angeles
PRODID:-//MMISoftware\, //MMISoftware//EN
X-WR-CALNAME;VALUE=TEXT:spring14cal
X-WR-RELCALID;VALUE=TEXT:87FB4C57-1D7B-4B80-B200-AEED845CB3AF
VERSION:2.0
BEGIN:VEVENT
SEQUENCE:1
UID:41D26C6E-965B-4BFB-AEC0-F1614074A4AF
DTSTAMP:20140127T111052Z
DTSTART;VALUE=DATE:20140101
SUMMARY:FAFSA
DESCRIPTION:First day to obtain FAFSA financial aid applications for 201
 4-15 academic year online at http://www.fafsa.ed.gov
DURATION:P1D
END:VEVENT
BEGIN:VEVENT
SEQUENCE:1
UID:DFE257FB-F475-43C2-9AEB-569EC4BA321D
DTSTAMP:20140127T111052Z
DTSTART;VALUE=DATE:20140106
SUMMARY:CA Dream
DESCRIPTION:First day to obtain California Dream Act financial aid appli
 cations for 2014-15 academic year online at https://dream.csac.ca.gov
.
.
.
.

您可以使用设置持续时间字符串的格式

持续时间本身(在您的案例中,我们只能看到第一个事件的持续时间,因为第二个事件的持续时间将是您跳过的第一行)是
duration:P1D
,其中
P1D
是持续时间本身,
duration
是属性名称

有关ICals
持续时间的更多信息,请参见

当您想要解析
ICal
文件时,可以使用

创建
ICal
文件很容易。例如:

use Data::ICal;
use Data::ICal::Entry::Event;
use strict;
use warnings;

my $calendar = Data::ICal->new;

my $vtodo = Data::ICal::Entry::Event->new;
$vtodo->add_properties(
  summary => "read SO",
  description => "reading cool SO posts",
  dtstart => Date::ICal->new( 
    day => 4, 
    month => 6, 
    year => 2014,
    hour => 8,
    min => 30,
    sec => 00
  )->ical,
  dtend => Date::ICal->new(
    day => 5, 
    month => 6, 
    year => 2014,
    hour => 9,
    min => 50,
    sec => 00
  )->ical,
);
$calendar->add_entry($vtodo);
print $calendar->as_string;

搜索为此目的制作的模块: