Hey Larry, Hey All.
We've discussed that back and forth as well.
In the end there are two reasons why we decided to ignore timezones:
1. We can not enforce a specific timezone via the return type. The only
thing we *can* enforce is that it is a DateTimeImmutable object. But we
can not enforce what timezone it is set in. Additionally no matter what
timezone it is set, it will anyhow describe a specific point in time -
which is what we care about in the end. If the Busines-Logic needs that
in a specific timezone it is also the task of the business-logic to
ensure that.
2. Depending on the Clock that is uses one can make sure that only
DateTimeImmutable objects of a specified timezone are returned on
calling `ClockInterface::now()`. So there can be an implicit contract to
always have a DateTimeImmutable Object with a defined timezone.
Besides those two reasons there is usually only a conversion into a
certain timezone necessary when displaying the data. That is the only
reason to actually modify the timezone. If you need the timestamp you
can always use `DateTimeImmutable::getTimestamp()` and per definition
that will always be in UTC. so there is no need to actually modify the
timezone to UTC before.
All that made it reasonable to ignore the timezone aspect.
Does that clarify the case?
Cheers
Andreas