Я пытаюсь преобразовать DateTime, который я получаю от API.Преобразование DateTime: «Часовой пояс не найден в базе данных»
Это, как их будут генерировать DATETIME строку:
public static function formatDate($date) {
$format = "Y-m-d\TH:i:sP";
if ($date instanceof DateTime) {
$d = $date->format($format);
} elseif (is_numeric($date)) {
$d = date($format, $date);
} else {
$d = (String) "$date";
}
return $d;
}
Wich дает мне
"2013-06-14T04:00:36.000-03:00"
И это то, что я делаю, чтобы преобразовать его обратно:
try
{
$date = Carbon\Carbon::createFromFormat("Y-m-d\TH:i:sP", "2013-06-14T04:00:36-03:00");
echo "<pre>".var_dump($date)."</pre>";
$date = DateTime::createFromFormat("Y-m-d\TH:i:sP", "2013-06-14T04:00:36.000-03:00");
echo "<pre>".var_dump($date)."</pre>";
$date = Carbon\Carbon::createFromFormat("Y-m-d\TH:i:sP", "2013-06-14T04:00:36.000-03:00"); /// raise exception
echo "<pre>".var_dump($date)."</pre>";
}
catch(InvalidArgumentException $x)
{
echo $x->getMessage();
}
Класс DateTime дает мне только нулевое значение, никаких ошибок, но Carbon (https://github.com/briannesbitt/Carbon) расширен от Da teTime говорит мне, что происходит, и это Ouput:
object(Carbon\Carbon)#181 (3) { ["date"]=> string(19) "2013-06-14 04:00:36" ["timezone_type"]=> int(1) ["timezone"]=> string(6) "-03:00" }
bool(false)
The timezone could not be found in the database
Так, просто опуская»0,000" от DateTime это работает, но почему, если он был создан PHP, используя тот же формат, что я используя для его преобразования?