snbhsmt_log

ネットワークとコンピュータ、その他いろいろ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Ruby で iCalendar の予定データを作成する

Ruby で iCalendar の予定データを作成してみた。 先日インストールした icalendar モジュールを使用している。

日時は、終日の予定の場合は Date オブジェクト、 時間指定ありの場合は DateTime オブジェクトを渡す。

日本語を指定する場合は toutf8 して渡す。 Icalendar::Component#add_sliced_text() が、iCalendar の仕様である 1 行 75 オクテッド分割処理を行っているので UTF-8 にしておく必要がある為 (ただし実際には 75 文字で分割してるので仕様通りになってないけど) 。

ical-sample-02.rb
#!/usr/bin/ruby
# vi: ts=2

# iCalendar のイベントデータを 1 件作成

$KCODE = 'u'
require 'rubygems'
require 'icalendar'
require 'date'
require 'kconv'

cal = Icalendar::Calendar.new

# タイムゾーン (VTIMEZONE) を作成
cal.timezone do
  tzid 'Asia/Tokyo'
  standard do
    tzoffsetfrom '+0900'
    tzoffsetto   '+0900'
    dtstart      '19700101T000000'
    tzname       'JST'
  end
end

# 予定 (VEVENT) を作成
cal.event do
  # 日時
  dtstart     DateTime.new(2009, 8, 20, 23,  5)
  dtend       DateTime.new(2009, 8, 20, 23, 20)
  ## 終日の場合
  #dtstart     Date.new(2009, 8, 20)
  #dtend       Date.new(2009, 8, 20)

  summary     "TOKYO FM 「Perfume LOCKS!」".toutf8
  description "この予定データはRubyで作成しました。".toutf8
  #klass       "PRIVATE"
end

puts cal.to_ical

結果。
BEGIN:VCALENDAR
VERSION:2.0
CALSCALE:GREGORIAN
PRODID:iCalendar-Ruby
BEGIN:VTIMEZONE
TZID:Asia/Tokyo
BEGIN:STANDARD
TZOFFSETTO:+0900
TZOFFSETFROM:+0900
DTSTART:19700101T000000
TZNAME:JST
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
SEQUENCE:0
DTEND;TZID=Asia/Tokyo:20090820T232000
UID:2009-08-19T20:31:13+0900_284067320@localhost.localdomain
DESCRIPTION:この予定データはRubyで作成しました。
SUMMARY:TOKYO FM 「Perfume LOCKS!」
DTSTART;TZID=Asia/Tokyo:20090820T230500
DTSTAMP:20090819T203113
END:VEVENT
END:VCALENDAR

参考:
iCalendar (http://www.asahi-net.or.jp/~CI5M-NMR/iCal/)
iCalendar覚書 4章1節 - メモのひとしかいない
スポンサーサイト

« iCalendar のアラームの指定|Top|Ruby で iCalendar の予定データを読む »

コメント

コメントの投稿

管理者にだけ表示を許可する

トラックバック

http://snbhsmt.blog110.fc2.com/tb.php/115-66012d8f

Top

HOME

snbhsmt

Author:snbhsmt
Google Profiles

http://www.ksky.ne.jp/~snbhsmt/

全ての記事を表示する

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。