NAME

Time::Simple - A simple, light-weight ISO 8601 time object.

SYNOPSIS

use Time::Simple;
my $time   = Time::Simple->new('23:24:59');
my $hour   = $time->hours;
my $minute = $time->minutes;
my $second = $time->seconds;

my $time2  = Time::Simple->new($hour, $minute, $second);

my $now = Time::Simple->new;
my $nexthour = $now + 60;
print "An hour from now is $nexthour.\n";

if ($nexthour->hour > 23) {
	print "It'll be tomorrow within the next hour!\n";
}

# You can also do this:
($time cmp "23:24:25")
# ...and this:
($time <=> [23, 24, 25])

$time++; # Add a minute
$time--; # Subtract a minute

my $now  = Time::Simple->new;
# A minute from now:
my $then = Time::Simple->new( $now + 60 );
# Or:
my $soon = Time::Simple->new( '00:01:00' );

DESCRIPTION

A simple, light-weight time object.

This version should be considered alpha: stable, but not yet thourghly tested.

FATAL ERRORS

Attempting to create an invalid time with this module will return undef rather than an object.

Some operations can produce fatal errors: these can be replaced by warnings and the return of undef by switching the value of $FATALS:

$Time::Simple::FATALS = undef;

You will then only get warnings to STDERR, and even then only if you asked perl for warnings with use warnings or by setting $^W either directly or with the -w command-line switch.

EXPORT

None by default.

CONSTRUCTOR (new)

$_ = Time::Simple->new('21:10:09');
$_ = Time::Simple->new( 11,10, 9 );
$_ = Time::Simple->new( time() );

The constructor new returns a Time::Simple object if the supplied values specify a valid time, otherwise returns undef.

Valid times are either as supplied by the time, or in ISO 8601 format. In the latter case, the values may be supplied as a colon-delimited scalar, as a list, or as an anonymous array.

If nothing is supplied to the constructor, the current local time will be used.

INSTANCE METHODS

METHOD next

my $will_be_by_one_second = $now->next;

Returns the next time by incrementing the caller's time by one second.

METHOD prev

my $was_by_one_second = $now->prev;

Returns the last time by decrementing the caller's time by one second.

METHOD hour

my $hr = $time->hour;

The hour. Alias: hours.

METHOD minute

my $min = $time->minute;

The minutes. Alias: minutes.

METHOD second

my $sec = $time->second;

The seconds. Alias: seconds.

format

Returns a string representing the time, in the format specified. If you don't pass a parameter, an ISO 8601 formatted time is returned.

$date->format;
$date->format("%H hours, %M minutes, and %S seconds");
$date->format("%H-%M-%S");

The formatting parameter is as you would pass to strftime(3): "strftime" in POSIX.

OPERATORS

Some operators can be used with Time::Simple objects:

+= -=

You can increment or decrement a time by a number of seconds using the += and -= operators

+ -

You can construct new times offset by a number of seconds using the + and - operators.

-

You can subtract two times ($t1 - $t2) to find the number of seconds between them.

comparison

You can compare two times using the arithmetic and/or string comparison operators: lt le ge gt < <= >= >.

*

You can interpolate a time instance directly into a string, in the format specified by ISO 8601 (eg: 23:24:25).

DIAGNOSTICS

Illegal octal digit ....

You probably used an anonymous array and prefixed a number with a leading zero, as you would if you supplied a scalar string: [11,10,09].

TODO

Suggestions welcome. How should operators not mentioend behave? Can one verbar times?

SEE ALSO

Time::HiRes, Date::Time, Date::Simple, "localtime" in perlfunc, "time" in perlfunc. "strftime" in POSIX, "mktime" in POSIX.

CREDITS

This module is a rewrite of Marty Pauley's excellent and very useful Date::Simple object. If you're reading, Marty: many thanks. For support, though, please contact Lee Goddard (lgoddard -at- cpan -dot- org) or use rt.cpan.org.

Thanks to Zsolt for testing.

AUTHOR

Lee Goddard (lgoddard -at- cpan -dot- org) after Marty Pauley.

COPYRIGHT AND LICENSE

Copyright (C) 2006 Lee Goddard. Parts Copyright (C) 2001, Kasei.

This program is free software; you can redistribute it and/or modify it under the terms of either: a) the GNU General Public License; either version 2 of the License, or (at your option) any later version. b) the Perl Artistic License.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

3 POD Errors

The following errors were encountered while parsing the POD:

Around line 344:

Expected text after =item, not a bullet

Around line 353:

'=item' outside of any '=over'

Around line 358:

You forgot a '=back' before '=head1'