2012-08-22 35 views
0
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' 
); 

「日期時間」是暗示,但$event->when->day按日期時間 給 Can't call method "day" without a package or object reference我以爲是我正在使用Perl愚蠢。 如何使用返回的日期對象(或任何它),以便我可以直接讀取日期和/或使其人類可讀?

回答

4

我從來沒有與該模塊的工作,但瀏覽它的文檔,我注意到

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

...

返回兩個datetime對象描繪的開始和結束以及標誌 注意它是否是一整天的事件。

所以,你可以試試類似($event->when)[0]->day的東西。

+0

感謝它的好處,即一雙新鮮的眼睛能夠在該模塊的文檔中看到某些東西,我當然不能忍受純粹憤怒的Google API的紅霧,而這個模塊會帶給我。 – Recct

+0

雖然這是排序它只是告訴我,只有一些隨機選擇的事件已被返回,而不是所有的或至少是最新的。 – Recct

+1

@Recc:也許使用'max_ results'選項'get_events'可能有幫助? – choroba

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等,但由於結束日期是undefData::Dumper使用其默認值。

當您試圖執行$event->when->day時,情況有所不同,顯然,當您試圖在數組上調用day時。