Changeset 347
- Timestamp:
- 11/14/06 05:58:56 (2 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
WWW-CybozuOffice6-Calendar/trunk/lib/WWW/CybozuOffice6/Calendar.pm
r346 r347 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 } elsif ($fields[6] eq ':') { # event w/o endtime 89 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 my %args = ( 140 year => $d[0], 141 month => $d[1], 142 day => $d[2], 143 hour => $t[0] || 0, 144 minute => $t[1] || 0, 145 second => $t[2] || 0, 146 time_zone => $this->{time_zone} || 'Asia/Tokyo', 147 ); 148 if ($args{hour} >= 24) { 149 $args{hour} = 23; 150 $args{minute} = 59; 151 $args{second} = 59; 152 } 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 153 151 DateTime->new(%args); 154 152 }
![(please configure the [header_logo] section in trac.ini)](/public/chrome/common/trac_banner.png)