Outlook + Perl + Win32 :: Ole:如何选择按日期排序的日历条目?

时间:2008-09-17 01:25:35

标签: perl winapi outlook

当前代码打开Outlook日历数据库,如下所示:

my $outlook = Win32::OLE->GetActiveObject('Outlook.Application') || Win32::OLE->new('Outlook.Application', 'Quit');

my $namespace = $outlook->GetNamespace("MAPI");

## only fetch entries from Jan 1, 2007 onwards
my $restrictDates = "[Start] >= '01/01/2007'";  

1 个答案:

答案 0 :(得分:1)

由于您没有显示获取对象日期的代码,因此如果不了解您尝试访问的Outlook对象,则无法回答此问题。

如果你有一个对象数组,你可以按日期对它们进行排序,然后在某个对象之前对它们进行过滤。

my $sub = sub {
       my $ad = $a->date_string_accessor;
       my $bd = $b->date_string_accessor;
       $ad =~ s:(\d+)/(\d+)/(\d+):$3 . sprintf('%0d', $1) . sprintf('%0d', $2):e;
       $bd =~ s:(\d+)/(\d+)/(\d+):$3 . sprintf('%0d', $1) . sprintf('%0d', $2):e;
       return $ad cmp $bd;
};

my @sorted = sort $sub @unsorted;

print join("\n", @sorted);

但在我看来,您应该使用应用程序本身来执行此操作 - 可能是Outlook具有某种查询/排序功能。