NAME
Astro::App::Satpass2::FormatTime - Format time for output.
SYNOPSIS
use Astro::App::Satpass2::FormatTime;
my $ft = Astro::App::Satpass2::FormatTime->new();
print 'The time is ', $ft->format_datetime( '%H:%M:%S', time );
NOTICE
This class and its subclasses are private to the Astro::App::Satpass2 package. The author reserves the right to add, change, or retract functionality without notice.
DETAILS
This class abstracts time formatting for Astro::App::Satpass2.
METHODS
This class supports the following public methods in addition to those inherited from Astro::App::Satpass2::Copier.
new
my $ft = Astro::App::Satpass2::FormatTime->new();
This method instantiates a time formatter object.
gmt
$ft->gmt ( 1 );
print 'The gmt attribute is ', $ft->gmt() ? "true\n" : "false\n";
This method is both accessor and mutator for the gmt
attribute. This boolean attribute provides a default for the gmt
argument of format_datetime().
If called with an argument, the argument becomes the new value of the gmt
attribute. The object is returned to allow call chaining.
If called without an argument, the current value of the gmt
attribute is returned.
format_datetime
print 'Time now: ', $ft->format_datetime( '%H:%M:%S', time, 0 ), "\n";
This attribute uses the format passed in the first argument to format the Perl time passed in the second argument. The third argument, if defined, overrides the gmt attribute, forcing the time to be GMT if true, or local if false.
The string representing the formatted time is returned.
This method must be overridden by the subclass. The override may use the value of the tz attribute to format the local time in the given zone, provided the value of tz is defined and not ''
. The override may accept times in formats other than Perl epoch, but it need not document or support these.
format_datetime_width
my $wid = $ft->format_datetime_width( '%H:%M:%S', $gmt );
This method computes the maximum width required to display a time in the given format. This is done by assuming only the month, day, and meridian might affect the width, and then trying each and returning the width of the widest.
The optional $gmt
argument, if defined, overrides the gmt attribute.
__format_datetime_width_adjust_object
my $ref = $self->__format_datetime_width_adjust_object( undef, year => 2100 );
This method must be overridden by the subclass. It exists to support format_datetime_width(), and should not be called directly. It is not itself supported, in the sense that the author reserves the right to change or revoke it without notice. Though since this whole mess is unsupported in that sense, this statement is redundant.
This method takes as its arguments a time in any format supported by the format_datetime() method, the name of a component (year
, month
, day
, hour
, minute
, or second
), and a value for that component. The time is returned with the given component set to the given value. If the time is undef
, a new time representing 01-Jan-2100 00:00:00
is constructed, adjusted, and returned.
round_time
$ft->round_time( 60 );
print 'Time rounded to ', $ft->round_time(), ' seconds';
This method is both accessor and mutator for the time rounding specification maintained on behalf of the subclass. If the subclass overrides this, it must call SUPER::round_time with the same arguments.
If called with an argument, the argument becomes the new rounding specification, in seconds. The argument must be an integer number of seconds, the special-cased strings 'second'
, 'minute'
or 'hour'
(which specify 1
, 60
and 3600
respectively), or undef
to turn off rounding. Be aware that if rounding is turned off the time formatter may truncate the time.
If called without an argument, the current value of the round_time
attribute is returned. This will always be an integer.
The default value is 1
.
__round_time_value
$time = $ft->__round_time_value( $time );
This method exists to support the rounding of time values by subclasses, and should not be called directly. It is not itself supported, in the sense that the author reserves the right to change or revoke it without notice.
This method takes as its argument an epoch time, and returns it rounded to the precision specified by $ft->round_time()
.
tz
$ft->tz( 'mst7mdt' );
print 'Current zone: ', $ft->tz(), "\n";
This method is both accessor and mutator for the time zone, maintained on behalf of the subclass. If the subclass overrides this, it must call SUPER::tz with the same arguments.
If called with an argument, the argument becomes the new zone, with either ''
or undef
representing the default zone. The object is returned to allow call chaining.
If called without an argument, the current value of the tz
attribute is returned.
SUPPORT
Support is by the author. Please file bug reports at https://rt.cpan.org, or in electronic mail to the author.
AUTHOR
Thomas R. Wyant, III wyant at cpan dot org
COPYRIGHT AND LICENSE
Copyright (C) 2010-2020 by Thomas R. Wyant, III
This program is free software; you can redistribute it and/or modify it under the same terms as Perl 5.10.0. For more details, see the full text of the licenses in the directory LICENSES.
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.