[ic] Modification of a passed Date Value

Gary Norton gnorton at broadgap.com
Tue Mar 2 16:05:40 EST 2004


> The following patch (code/UserTag/convert_date.tag) will allow this:
> 
> Test page:
> 
>     No args: [convert-date][/convert-date]<br>
>     2 days before now: [convert-date adjust="-2"][/convert-date]<br>
>     2 hours before now: [convert-date adjust="-2 hours"][/convert-
> date]<br>
>     2 hours after now: [convert-date adjust="2 hours"][/convert-date]<br>
>     2 days before 20040218: [convert-date adjust="-2"]20040218[/convert-
> date]<br>
>     2 days before 2004-02-18: [convert-date adjust="-2"]2004-02-
> 18[/convert-date]<br>
>     3 days after 2004-02-18: [convert-date days="3"]2004-02-18[/convert-
> date]<br>
>     20040218: [convert-date]20040218[/convert-date]<br>
>     2004-02-18: [convert-date]2004-02-18[/convert-date]<br>
> 
> Results:
> 
>     No args: 02-Mar-2004 07:24PM
>     2 days before now: 29-Feb-2004 07:24PM
>     2 hours before now: 02-Mar-2004 05:24PM
>     2 hours after now: 02-Mar-2004 09:24PM
>     2 days before 20040218: 16-Feb-2004
>     2 days before 2004-02-18: 16-Feb-2004
>     3 days after 2004-02-18: 21-Feb-2004
>     20040218: 18-Feb-2004
>     2004-02-18: 18-Feb-2004
> 
> ======================================================================
> *** convert_date.tag    29 Jan 2002 05:52:42 -0000      1.1
> --- convert_date.tag    2 Mar 2004 19:21:17 -0000
> ***************
> *** 1,13 ****
> ! UserTag convert-date Order days
>   UserTag convert-date PosNumber 1
>   UserTag convert-date addAttr
>   UserTag convert-date AttrAlias fmt format
>   UserTag convert-date HasEndTag
>   UserTag convert-date Interpolate
>   UserTag convert-date Routine <<EOR
>   sub {
> !     my ($days, $opt, $text) = @_;
>       my @t;
> 
>         if(! ref $opt) {
>                 my $raw = $opt ? 1 : 0;
> --- 1,15 ----
> ! UserTag convert-date Order adjust
>   UserTag convert-date PosNumber 1
>   UserTag convert-date addAttr
>   UserTag convert-date AttrAlias fmt format
> + UserTag convert-date AttrAlias days adjust
>   UserTag convert-date HasEndTag
>   UserTag convert-date Interpolate
>   UserTag convert-date Routine <<EOR
>   sub {
> !     my ($adjust, $opt, $text) = @_;
>       my @t;
> +     my $now;
> 
>         if(! ref $opt) {
>                 my $raw = $opt ? 1 : 0;
> ***************
> *** 32,42 ****
>                                         $t[5] -= 1900;
>         }
>         else {
> !                                       my $now = time();
> !                                       if ($days) {
> !
> $now += $days * 86400;
> !                                       }
> !                                       @t = localtime($now);
>         }
> 
>         if (defined $opt->{raw} and Vend::Util::is_yes($opt->{raw})) {
> --- 34,53 ----
>                                         $t[5] -= 1900;
>         }
>         else {
> !                                       $now = time();
> !                                       @t = localtime($now) unless
> $adjust;
> !       }
> !
> !       if ($adjust) {
> !               $now ||= mktime(@t);
> !               $adjust .= ' days' if $adjust =~ /^[-\s\d]+$/;
> !
> !               if ($adjust =~ s/^\s*-\s*//) {
> !                       @t = localtime($now -
> Vend::Config::time_to_seconds($adjust));
> !               }
> !               else {
> !                       @t = localtime($now +
> Vend::Config::time_to_seconds($adjust));
> !               }
>         }
> 
>         if (defined $opt->{raw} and Vend::Util::is_yes($opt->{raw})) {

Thanks Kevin and Mike for your help in this. You guys are great.

-Gary
--------------------------------------------------------------------
Gary Norton
broadGap Technologies




More information about the interchange-users mailing list