У меня есть дата в этом формате 2068-06-15
. Я хочу получить год с даты, используя php-функции. Не могли бы вы предложить, как это можно сделать.
$date = DateTime::createFromFormat("Ymd", "2068-06-15"); echo $date->format("Y");
Класс DateTime не использует временную метку unix внутри, поэтому он обрабатывает даты до 1970 года или после 2038 года.
Вы можете использовать функции strtotime
и date
следующим образом:
echo date('Y', strtotime('2068-06-15'));
Обратите внимание, однако, что PHP может обрабатывать год до 2038
Вы можете проверить это здесь
Если ваша дата всегда в этом формате, вы также можете получить год следующим образом:
$parts = explode('-', '2068-06-15'); echo $parts[0];
<?php
list ($ year) = explode ("-", "2068-06-15");
echo $ year;
?>
Я бы использовал это:
$parts = explode('-', '2068-06-15'); echo $parts[0];
Похоже, что дата исходит от источника, где он всегда один и тот же, гораздо быстрее, используя взрыв.
public function getYear($pdate) { $date = DateTime::createFromFormat("Ymd", $pdate); return $date->format("Y"); } public function getMonth($pdate) { $date = DateTime::createFromFormat("Ymd", $pdate); return $date->format("m"); } public function getDay($pdate) { $date = DateTime::createFromFormat("Ymd", $pdate); return $date->format("d"); }
Предполагая, что у вас есть дата в виде строки (извините, что было непонятно из вашего вопроса, если это так), можно разбить строку на символы:
$date = "2068-06-15"; $split_date = split("-", $date); $year = $split_date[0];
$Y_date = split("-","2068-06-15"); $year = $Y_date[0];
Вы также можете использовать взрыв
Вы писали, что формат может меняться от YYYY-mm-dd до dd-mm-YYYY, вы можете попытаться найти год там
$parts = explode("-","2068-06-15"); for ($i = 0; $i < count($parts); $i++) { if(strlen($parts[$i]) == 4) { $year = $parts[$i]; break; } }