DP::Date - Date manipulation support


NAME

DP::Date - Date manipulation support


SYNOPSIS

  use DP::Date;

  ...
  ...


DESCRIPTION

METHODS

new
 $DateObject = DP::Date->new( [ $Date_asString ] )
 index of $DateObject [ blessed array ]
 0 - date as string
 1 - date as time() - secs since epoch
 2 - weekday from local time
 3 - yearday from local time
asString
 $Date_asString = $DateObject->asString( [ $SetDate_asString ] )

Get/Set string-of-numbers formatted value date-time value of B<$DateObject> to $SetDate_asString.

B< $Date_asString > is string of date numbers without any punctuation,
thus having the date-time '2003-12-24 20:00:00' produces 
date asString '20031224200000'
asTime
 $Date_asTime = $DateObject->asTime( [ $setDate_asTime | time ] )

Get/Set date-time value of B<$DateObject> to $setDate_asTime.

B< $Date_asTime > is compatible with perl's time(), ( eg. seconds elapsed since 1.1.1970? )
asISO
 $Date_asISO = $DateObject->asISO( [ $setDate_asISO ] )

Get/Set ISO formatted date-time value of B<$DateObject> to $setDate_asTime.

B< $Date_asISO > example: B<2003-12-24 20:00:00>  ( no timezone, no 'T' letter as sometimes used 2003-12-24T20:00:00 )
 # MUST be EXACTLY this format: 2002-12-24 12:34:56 (YYYY-MM-DD hh:mm:ss)
 # no checking, 2b faster

=cut

sub asISO { my $self = shift(); my( $val ) = @_; if( defined $val ) { # MUST be EXACTLY this format: 2002-12-24 12:34:56 (YYYY-MM-DD hh:mm:ss) # no checking, 2b faster $self->asString( join('',unpack( 'A4xA2xA2xA2xA2xA2', $val ))); } sprintf '%04d-%02d-%02d %02d:%02d:%02d', unpack( 'A4A2A2A2A2A2', $$self[0] ); }

GetAsISO
 $Date_asISO = $DateObject->GetAsISO()

Get ISO formatted value of B<$DateObject> to $setDate_asTime.
See also B<asISO()> method.

=cut

sub GetAsISO { my $self = shift(); sprintf '%04d-%02d-%02d %02d:%02d:%02d', unpack( 'A4A2A2A2A2A2', $$self[0] ); }

GetAsArray
 @Date_array = $DateObject->GetAsISO()

Get array of values of B<$DateObject> to $setDate_asTime,
where @Date_array = ( $YYYY, $MM, $DD, $hh, $mm, $ss )
See also B<asISO()> method.

=cut

sub GetAsArray { my $self = shift(); unpack( 'A4A2A2A2A2A2', $$self[0] ); }

SetStringAtOffset
 $Date_asString = $DateObject->SetStringAtOffset( $offset, $newStringValue )

Example: want to change hour value of $DateObject
 my $DateObject = DP::Date->new();
 $DateObject->SetStringAtOffset( 8, '20' );   # initial date: 2003-12-24 12:34:56
 $Date_asISO = $DateObject->GetAsISO();       # changed hour: 2003-12-24 20:34:56

Offsets:
 year......  0 +4 
 month.....  4 +2
 day.......  6 +2
 hour......  8 +2
 min....... 10 +2
 sec....... 12 +2
Year
Get/Set
 $DateObject->Year( [ $YYYY ] )

Month
Get/Set
 $MonthNr = $DateObject->Month( [ $Month_name_as_english_3letters_abbr ] )

MonthNr
Get/Set
 $MonthNr = $DateObject->MonthNr( [ $Month_as_two_digits_based_JAN_eq_01 ] )

Day
Get/Set
 $Day = $DateObject->Day( [ $Day_of_month_as_two_digits ] )

Hour
Get/Set
 $Hour = $DateObject->Hour( [ $Hour_as_two_digits ] )

Minute
Get/Set
 $Minute = $DateObject->Minute( [ $Minute_as_two_digits ] )

Second
Get/Set
 $Second = $DateObject->Second( [ $Second_as_two_digits ] )

GetWeekDay
Get
 $GetWeekDay = $DateObject->GetWeekDay

GetYearDay
Get
 $GetYearDay = $DateObject->GetYearDay

str2time
see source code, sorry

cmpString
see source code, sorry

isSameDateAs
Compare $DateObject with $anotherDateObject
 $bool = $DateObject->isSameDateAs( $anotherDateObject [, $comparingSize ] )

B< $comparingSize > is length of compared date-string .

see also asString and cmpString methods.

GetYearMonthBeginTime
Get the time-value at which the specified month of the year begins. Very usefull! Values are cached as speed improvement.
 $time_value = $DateObject->GetYearMonthBeginTime( $YYYY_or_YY_string, $MM_string )

see also B< asTime > method.


EXPORT

nothing


FILES

none


REVISION

project started: 2002/06/04

$Id: Date.pm_rev 1.6 2003/12/12 11:00:15 root Exp root $


AUTHOR

 Daniel Peder
 <Daniel.Peder@InfoSet.COM>
 http://www.infoset.com
 Czech Republic national-flag: 
 LeftSideBlueTriangleRightSideHorizontalSplitTopWhiteBottomRed


SEE ALSO

other date time modules at CPAN, http://www.CPAN.org

 DP::Date - Date manipulation support