in reply to Re: Re: Date conversion with Class::DBI
in thread Date conversion with Class::DBI
I guess I don't quite get what you are trying to do then. To parse a date into a Time::Piece object you can use the strptime:
my $date = Time::Piece->strptime("01/02/2003", "%e/%B/%Y"); $t->created($date);
Where $t is a Class::DBI object with a 'created' column. With the has_a relationship you pass an object to the mutator, not a string. If you pass a string to the mutator, it will try to use the inflate method which will expect your date string to be in MySQL format. So just pass it a Time::Piece object which is what it is after anyway.
Now when you want to print it or retrieve it later on in the format you are after, you can use:
$t->created->dmy('/');
You don't have to worry about MySQL date formats at all, you just have to know how to create Time::Piece objects, and how to alter and access Time::Piece objects.
If you want these formats to happen automatically, then write a couple of functions that do the work for you:
sub parse_date { return Time::Piece->strptime(shift, "%e/%B/%Y"); } sub stringify_date { return shift->dmy('/'); }
You could probably write a custom module that inherits from Time::Piece::MySQL and override the new and stringification subroutines with something like the above to make things a little more transparent.
If I am still misunderstanding what you are trying to accomplish, perhaps you could write a quick code sample of how you would like to use dates with Class::DBI.
- Cees
Updated: Fixed a dumb little typo
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Re: Re: Date conversion with Class::DBI
by bsb (Priest) on Jul 08, 2003 at 00:14 UTC | |
by cees (Curate) on Jul 08, 2003 at 04:55 UTC | |
by bsb (Priest) on Jul 08, 2003 at 08:59 UTC |