NAME
SPOPS::Tool::DateConvert - Convert dates to objects to/from your datastore
SYNOPSIS
# Load information with read-only rule
my $spops = {
class => 'This::Class',
isa => [ 'SPOPS::DBI' ],
field => [ 'email', 'language', 'birthtime' ],
id_field => 'email',
base_table => 'test_table',
rules_from => [ 'SPOPS::Tool::DateConvert' ],
convert_date_field => [ 'birthtime' ],
convert_date_class => 'Time::Piece',
convert_date_format => '%Y-%m-%d %H:%M:%S',
};
SPOPS::Initialize->process({ config => { test => $spops } });
my $item = This::Class->fetch(55);
print "Birthdate field isa: ", ref( $item->{birthtime} ), "\n";
--> Birthdate field isa: Time::Piece
# Format some other way
print "Birthday occurred on day ", $item->{birthtime}->strftime( '%j' ),
"which was a ", $item->{birthtime}->strftime( '%A' ), "\n";
DESCRIPTION
This SPOPS tool converts data coming from the database into a date object, and translates the date object into the proper format before it's put back into the database.
CONFIGURATION
This tool uses three configuration fields:
convert_date_field (\@)
An arrayref of fields that will be converted.
If not specified or if empty no action will be taken.
convert_date_class ($)
Class for date object to be instantiated. Supported classes are Time::Piece and Class::Date.
If not specified, 'Time::Piece' will be used.
convert_date_format ($)
Format (in strftime format) for date conversions. All implementations will likely use this for converting the object to a string. Some implementations (like Time::Piece) will use this for parsing the date from the database into the date object as well.
If not specified, '%Y-%m-%d %H:%M:%S' will be used.
IMPLEMENTATIONS
Uses the strptime()
method and convert_date_format
to translate the date from the database.
Uses the strftime()
method along with convert_date_format
configuration to translate the date into a string.
Uses the new()
method to translate the date from the database.
Uses the strftime()
method along with convert_date_format
configuration to translate the date into a string.
TO DO
If necessary, make this a factory and refactor if clauses into subclasses for the different implementations.
SEE ALSO
AUTHOR
Chris Winters <chris@cwinters.com>