Changeset 348
- Timestamp:
- 11/14/06 06:00:56 (2 years ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
cybozu2ical/trunk/lib/WWW/CybozuOffice6/Calendar.pm
r344 r348 82 82 my $start = $this->to_datetime($fields[3], $fields[5]); 83 83 my $end = $this->to_datetime($fields[4], $fields[6]); 84 if ($fields[5] =~ /^:$/) { # full-day event 84 return unless $start && $end; 85 if ($fields[5] eq ':') { # full-day event 85 86 $start = $start->truncate(to => 'day'); 86 87 $end = $end->add(days => 1)->truncate(to => 'day'); 87 88 $is_full_day = 1; 88 } elsif ($fields[6] =~ /^:$/) { # event w/o endtime89 $end = $start-> add(minutes => 10);89 } elsif ($fields[6] eq ':') { # event w/o endtime 90 $end = $start->clone->add(minutes => 10); 90 91 } 91 92 92 my($created) = $fields[1] =~ m/ ts\.(\d+)/;93 $created = DateTime->from_epoch(epoch => $created );93 my($created) = $fields[1] =~ m/^ts\.(\d+)$/; 94 $created = DateTime->from_epoch(epoch => $created || 0); 94 95 95 96 my $summary = $fields[11] || ''; … … 126 127 $item->{frequency} = $FREQUENCY{$freq}; 127 128 $item->{frequency_value} = $fields[8] || 0; 128 $item->{until} = $this->to_datetime($fields[4] , '0:0:0')129 unless $fields[4] =~ m!^//$!;129 $item->{until} = $this->to_datetime($fields[4]) 130 if $fields[4] ne '//'; 130 131 } 131 132 … … 135 136 sub to_datetime { 136 137 my $this = shift; 137 my @d = split '/', $_[0] || ''; 138 my @t = split ':', $_[1] || ''; 139 DateTime->new( 140 year => $d[0], month => $d[1], day => $d[2], 141 hour => $t[0] || 0, minute => $t[1] || 0, second => $t[2] || 0, 142 time_zone => $this->{time_zone} || 'Asia/Tokyo', 143 ); 138 my($ymd, $hms) = @_; 139 140 my %args; 141 return unless $ymd && $ymd =~ m!^(\d+)/(\d+)/(\d+)$!; 142 @args{qw(year month day)} = ($1, $2, $3); 143 144 $hms = '0:0:0' unless $hms && $hms ne ':'; 145 return unless $hms =~ m!^(\d+):(\d+)(?:\:?(\d+)?)$!; 146 @args{qw(hour minute second)} = ($1, $2, $3 || 0); 147 @args{qw(hour minute second)} = (23, 59, 59) if $args{hour} > 23; 148 149 $args{time_zone} = $this->{time_zone} || 'Asia/Tokyo'; 150 151 DateTime->new(%args); 144 152 } 145 153
