SPOPS::Tool::DateConvert - Convert dates to objects to/from your datastore
# Class configuration with date convertion rule and metadata 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"; # When creating a new object, just set the correct type of object as # the field value my $newborn = This::Class->new({ email => 'foo@bar.com', language => 'en', birthtime => Time::Piece->new }); $newborn->save;
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.
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:
DateTime (along with supporting parse class DateTime::Format::Strptime)
Time::Piece
Class::Date.
If not specified, 'DateTime' 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 and DateTime) 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.
DateTime
Uses the DateTime::Format::Strptime and convert_date_format to translate the date from the database.
convert_date_format
Uses the DateTime strftime() method from along with convert_date_format configuration to translate the date into a string.
strftime()
Uses the strptime() method and convert_date_format to translate the date from the database.
strptime()
Uses the strftime() method along with convert_date_format configuration to translate the date into a string.
Class::Date
Uses the new() method to translate the date from the database.
new()
If necessary, make this a factory and refactor if clauses into subclasses for the different implementations.
DateTime::Format::Strptime
Chris Winters <chris@cwinters.com>
To install SPOPS, copy and paste the appropriate command in to your terminal.
cpanm
cpanm SPOPS
CPAN shell
perl -MCPAN -e shell install SPOPS
For more information on module installation, please visit the detailed CPAN module installation guide.