Impossible times due to daylight savings are handled by this function in a way similar to impossible dates, with the difference that this is not an error (i.e. a consequent call to DateTime::getLastError() yields nothing).
For example:
In the timezone "Europe/Berlin" on Sunday, March 30 2014 there was no 02:30 am, because that our is being skipped due to daylight savings on that day.
<?php
$tz = new DateTimeZone("Europe/Berlin");
$impossible_time = "2014-03-30T02:30:00";
$date = new DateTime($impossible_time, $tz);
var_dump($date->getLastErrors());
echo "The impossible time '$impossible_time' is interpreted as: " . $date->format(DateTime::ISO8601) . "\n";
?>
That is similar to how, for example, Febuary 29, 2014 would be handled, which would be interpreted as March 1, 2014. The difference is, that with the date that would be an error, with the time it is not.
Ambigous times due to daylight savings are handled as the second possibility. For example the time 2:30 am occurred twice on October 26, 2014 in the timezone "Europe/Berlin".
<?php
$tz = new DateTimeZone("Europe/Berlin");
$ambiguous_time = "2014-10-26T02:30:00";
$date = new DateTime($ambiguous_time, $tz);
echo "The ambiguous time '$ambiguous_time' is interpreted as: " . $date->format(DateTime::ISO8601) . "\n";
?>
Note that "2014-10-26T02:30:00+0200", one hour earlier, would be a correct answer as well.