Net :: Google :: Calendar返回的结果是什么日期数据类型

时间:2012-08-22 14:16:44

标签: perl date google-calendar-api

use Net::Google::Calendar;
my $cal = Net::Google::Calendar->new;
$cal->login(...);

 my $c;
 for ($cal->get_calendars) {
    $c = $_ if ($_->title eq 'Custom');
 }
 $cal->set_calendar($c);

 for my $event ($cal->get_events) {
    print "<pre>" . $event->title . " ". Dumper($event->when) ." </pre>";
 }

标题返回正常,但我也需要日期,希望按日期过滤掉我需要的事件(就像我对该帐户的日历一样,我认为这个模块不支持更高级的方式)。 如印刷结果所示,那里肯定有一些东西:

VAR1 = bless(
    {
        'local_rd_secs' => 0,
        'local_rd_days' => 734733,
        'rd_nanosecs'   => 0,
        'locale'        => bless(
            {
                'default_time_format_length' => 'medium',
                'native_territory'           => 'United States',
                'native_language'            => 'English',
                'native_complete_name'       => 'English United States',
                'en_language'                => 'English',
                'id'                         => 'en_US',
                'default_date_format_length' => 'medium',
                'en_complete_name'           => 'English United States',
                'en_territory'               => 'United States'
            },
            'DateTime::Locale::en_US'
        ),
        'local_c' => {
            'hour'           => 0,
            'second'         => 0,
            'month'          => 8,
            'quarter'        => 3,
            'day_of_year'    => 231,
            'day_of_quarter' => 49,
            'minute'         => 0,
            'day'            => 18,
            'day_of_week'    => 6,
            'year'           => 2012
        },
        'utc_rd_secs'     => 0,
        'formatter'       => undef,
        'tz'              => bless( { 'name' => 'UTC' }, 'DateTime::TimeZone::UTC' ),
        'utc_year'        => 2013,
        'utc_rd_days'     => 734733,
        'offset_modifier' => 0
    },
    'DateTime'
);

'DateTime'是暗示性的,但是根据DateTime $event->when->dayCan't call method "day" without a package or object reference我认为我使用Perl是愚蠢的。 如何使用返回的日期对象(或其他任何对象),以便我可以直接读取日期和/或使其可读?

2 个答案:

答案 0 :(得分:4)

我从未使用该模块,但浏览其文档,我注意到

  

when [<start> <end> [allday]]

     

...

     

返回描述开始和结束的两个DateTime对象以及一个标志   注意这是否是一整天的活动。

所以,你可以试试( $event->when )[0]->day

答案 1 :(得分:2)

ref($event)显示事件的包是Net::Google::Calendar::Entry。它的文档显示了问题:

when [<start> <end> [allday]]
...
    Returns two DateTime objects depicting the start and end and a flag
    noting whether it's an all day event.

当您将其传递给Data::Dumper时,DateTime个对象将成为Dumper个参数。 Dumper的第二个参数通常是一个数组引用,用作输出中使用的变量名而不是$VAR1等,但结束日期为undef Data::Dumper使用它的默认值。

当您尝试执行$event->when->day时,情况会有所不同,显然,当您尝试在阵列上调用day时。