Changeset 1743

Show
Ignore:
Timestamp:
10/14/06 13:55:44
Author:
miyagawa
Message:

* Fixed Plagger::Date->parse_dwim to respect the timezone in the original string
* Added Filter::GuessTimeZoneByDomain?. Fixes #424 Refs #211

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/plagger/lib/Plagger/Date.pm

    r1734 r1743  
    3434 
    3535    require Date::Parse; 
    36     my $time = Date::Parse::str2time($str) or return; 
     36    my($sec, $min, $hour, $day, $month, $year, $zone) = Date::Parse::strptime($str); 
     37    defined $sec or return; 
    3738 
    38     $class->from_epoch($time); 
     39    my $dt = $class->new( 
     40        year   => $year + 1900, 
     41        month  => $month + 1, 
     42        day    => $day, 
     43        hour   => $hour, 
     44        minute => $min, 
     45        second => $sec, 
     46    ); 
     47 
     48    if (defined $zone) { 
     49        use integer; 
     50        my $offset = $zone / 60; 
     51        my $sign; 
     52        if ($zone >= 0) { 
     53            $sign = '+'; 
     54        } else { 
     55            $sign = '-'; 
     56            $offset = -$offset; 
     57        } 
     58        my $hour   = $offset / 60; 
     59        my $minute = $offset % 60; 
     60        my $tz     = sprintf '%s%02d%02d', $sign, $hour, $minute; 
     61        $dt->set_time_zone($tz); 
     62    } 
     63 
     64    $dt; 
    3965} 
    4066 
     
    5985    my $class = shift; 
    6086    my %p = @_ == 1 ? (epoch => $_[0]) : @_; 
    61  
    62     $p{time_zone} = Plagger->context->conf->{timezone} || 'local'; 
    6387    $class->SUPER::from_epoch(%p); 
    6488} 
  • trunk/plagger/t/99-pod-spell.t

    r1741 r1743  
    288288plaintext 
    289289Trackback 
     290ccTLD 
     291cc 
     292asahi 
     293ip 
     294timezones 
     295www