Jonas B.Nielsen wrote:
> 
> Well I really the general idea of a
DateTime::Calc::Namespace, but I 
> think the case of DateTime::Pregnancy
(Date::Pregnancy now) really 
> shows the difficulty of generalizing such a thing.
> 
> In calculating a date a of birth I currently have
knowledge of 3 
> different methods. They all differ at bit but all
calculate from the 
> first day of the last period and from the you can
somewhat deduct the 
> conception date.
> 
> So the conception date indicating the start of the
pregnancy is 
> something, which is not known when initializing the
DateTime object 
> calling the constructor. This could of just be
documented, but I think 
> it conflicts a bit with the idea of a start and an
end, also since the 
> main functionality in Date::Pregnancy is
calculating the end date.
> 
> So a DateTime::Calculate::Pregnancy could be used
to measure the length 
> of a pregnancy for comparison etc. I am not saying
that it would be 
> impossible to implement DateTime::Calc::Pregnancy
based in 
> Date::Pregnancy, but the world of pregnancy
calculation is a bit 
> upside-down compared to normal calendar usage if
you get my point.
> 

This could be implemented as a
DateTime::Event::Spreadsheet "bidirectional
calculator" - from the docs:

  # - given a birthday, calculate the age; 
  # - given an age, calculate the birthday.

  use DateTime::Event::Spreadsheet;

  # setup the Spreadsheet
  [ ... some initialization hidden ... ]

  # test the Spreadsheet

  $dtes->set(
     birthday => DateTime->new( year=>1964,
month=>12, day=>14 )
  );
  my @age = $dtes->get( 'age' )->deltas;
  print "Age is @age\n";

  $dtes->set(
    age => DateTime::Duration->new( years => 20 )
  );
  my $birthday = $dtes->get( 'birthday' )->datetime;
  print "Birthday was $birthday\n";


For example, you could add 'conception' and 'last
period' cells to this spreadsheet.

(DateTime::Event::Spreadsheet is in DateTime CVS)

- Flavio S. Glock


Reply via email to