Получить год с указанной даты php

У меня есть дата в этом формате 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; } }