XAO::DO::Web::Date - XAO::Web date dysplayable object


XAO-Web documentation Contained in the XAO-Web distribution.

Index


Code Index:

NAME

Top

XAO::DO::Web::Date - XAO::Web date dysplayable object

SYNOPSIS

Top

 <%Date%>

 <%Date gmtime="123456789" style="short"%>

 <%Date format="%H:%M"%>

 <%Date gmtime="123456789" timezone="US/Eastern"%>

DESCRIPTION

Top

Displays current or given date. Arguments are:

gmtime

Number of seconds since the Epoch (unix standard time). Optional, default is to display the current time.

style

Display according to one of internal styles:

 dateonly   => %m/%d/%Y             => 3/27/2002
 short      => %H:%M:%S %m/%d/%Y    => 12:23:34 3/27/2002
 timeonly   => %H:%M:%S             => 12:23:34

format

Set custom format according to strftime C function API.

timezone

May contain a name of a time zone, which must be known to the system. Default is the default system timezone.

METHODS

Top

No publicly available methods except overriden display().

EXPORTS

Top

Nothing.

AUTHOR

Top

Copyright (c) 2005 Andrew Maltsev

Copyright (c) 2001-2004 Andrew Maltsev, XAO Inc.

<am@ejelta.com> -- http://ejelta.com/xao/

SEE ALSO

Top

Recommended reading: XAO::Web, XAO::DO::Web::Page.


XAO-Web documentation Contained in the XAO-Web distribution.
###############################################################################
package XAO::DO::Web::Date;
use strict;
use POSIX qw(strftime);
use XAO::Utils;
use XAO::Objects;
use base XAO::Objects->load(objname => 'Web::Page');

use vars qw($VERSION);
$VERSION=(0+sprintf('%u.%03u',(q$Id: Date.pm,v 2.1 2005/01/14 01:39:57 am Exp $ =~ /\s(\d+)\.(\d+)\s/))) || die "Bad VERSION";

###############################################################################

sub display ($;%) {
    my $self=shift;
    my $args=get_args(\@_);

    ##
    # Setting timezone
    #
    my $tz;
    if($args->{timezone}) {
        $tz=$ENV{TZ};
        $ENV{TZ}=$args->{timezone};
    }

    ##
    # It can be current time or given time
    #
    my $time=$args->{gmtime} || time;

    ##
    # Checking output style
    #
    my $style=$args->{style} || '';
    my $format='';
    if(!$style) {
        $format=$args->{format};
    }
    elsif($style eq 'dateonly') {
        $format='%m/%d/%Y';
    }
    elsif($style eq 'short') {
        $format='%H:%M:%S %m/%d/%Y';
    }
    elsif($style eq 'timeonly') {
        $format='%H:%M:%S';
    }
    else {
        eprint "Unknown date style '$style'";
    }

    ##
    # Displaying according to format.
    #
    if($format) {
        $time=strftime($format,localtime($time));
    }
    else {
        $time=scalar(localtime($time));
    }

    $self->textout($time);

    ##
    # Restoring timezone
    #
    if($args->{timezone}) {
        if(defined $tz) {
            $ENV{TZ}=$tz;
        }
        else {
            delete $ENV{TZ};
        }
    }
}

###############################################################################
1;
__END__