It seems that it's impossible to instantiate an object with missing information even when it's
allowed by the format. Using DateTime::Format::ISO8601 I can instantiate
->new('2003')
which is allowed by ISO8601 but then DateTime applies a default month and
->month
gives "01"
so it's impossible to distinguish whether the date passed was "2003" or "2003-01-01", for
example. I would have expected ->month to return "undef" for the former but it defaults to "01"
and I can't find a way to prevent this. Seems the same also in every other date module I have
tried.