I like the idea (this is the partial date & time thing right?) but I am not too sure about the name... unless you start dealing with times with real and imaginary parts :-) (Not that I have any suggestions for a name yet).
Regarding the interface would it be better to have: -- my $dtc1 = DateTime::Complex->new_undef(); # I assume that DT::C->new() assumes 0 like DT->new() # but that DT::C->new(year => 2003, day => undef ) # would give 2003-xx-01-T00:00:00? my $dtc2 = $dtc1->set( month => 12 ); my $christmas = $dtc2->set( day => 24 ); # Do these clone BTW or are $dtc1, $dtc2 and $christmas all refs # to the same object (like DateTime does)? my $december = $christmas->set(day => undef); print $december->datetime; # xxxx-12-xxTxx:xx:xx # See above question re cloning objects. print $christmas->next( DateTime->now )->datetime; # 2003-12-24Txx:xx:xx my $xmas_noon = $christmas->clone()->set( hour => 12 ); print $christmas->contains( $xmas_noon ); # 1 -- Regarding the cloning question, it is more like DateTime if they do not get cloned autmomatically, but I am assuming your implementation is based on your DT::Set which I think does clone automatically? I would still vote for not cloning. -ben On Fri, Jul 18, 2003 at 11:15:30AM -0300, Flavio S. Glock wrote: > RFC: DateTime::Complex > > use DateTime; > use DateTime::Complex; > use strict; > > my $dtc1 = DateTime::Complex->new_undef; > > my $dtc2 = $dtc1->define_month( 12 ); > my $christmas = $dtc2->define_day( 24 ); > > my $december = $christmas->undef_day; > > print $december->datetime; > # xxxx-12-xxTxx:xx:xx > > print $christmas->next( DateTime->now )->datetime; > # 2003-12-24Txx:xx:xx > > my $xmas_noon = $christmas->define_hour( 12 ); > > print $christmas->contains( $xmas_noon ); > # 1 > > [some too-weird examples removed] > > :) > - Flavio S. Glock