PHP – Как получить год, месяц, день из строки времени

Учитывая следующую временную шкалу:

$str = '2000-11-29'; $php_date = getdate( $str ); echo '<pre>'; print_r ($php_date); echo '</pre>'; 

Как получить год / месяц / день в PHP?

 [seconds] => 20 [minutes] => 33 [hours] => 18 [mday] => 31 [wday] => 3 [mon] => 12 [year] => 1969 [yday] => 364 [weekday] => Wednesday [month] => December [0] => 2000 

Я не знаю, почему я получаю 1969 год.

спасибо

Вы можете использовать strtotime для синтаксического анализа строки времени и передать полученную getdate метку для getdate (или использовать date для форматирования вашего времени).

 $str = '2000-11-29'; if (($timestamp = strtotime($str)) !== false) { $php_date = getdate($timestamp); // or if you want to output a date in year/month/day format: $date = date("Y/m/d", $timestamp); // see the date manual page for format options } else { echo 'invalid timestamp!'; } 

Обратите внимание, что strtotime вернет false если строка времени недействительна или не может быть проанализирована. Когда временная метка, которую вы пытаетесь проанализировать, недействительна, вы получаете дату 1969-12-31, с которой вы столкнулись раньше.

Обновление: забыли добавить точку с запятой в конце первой строки, попробуйте следующее:

 <?php $str = "2010-08-29"; // Missed semicolon here $time = strtotime($str); // You can now use date() functions with $time, like $weekday = date("l", $time); // Wednesday or whatever date it is ?> 

Надеюсь, это поможет вам!

PHP – Как получить год, месяц, день из строки времени

 $dateValue = strtotime($q); $yr = date("Y", $dateValue) ." "; $mon = date("m", $dateValue)." "; $date = date("d", $dateValue); 

Используя стиль объектно-ориентированного программирования, вы можете сделать это с помощью класса DateTime

 $dateFormat = 'Ym-d'; $stringDate = '2000-11-29'; $date = DateTime::createFromFormat($dateFormat, $stringDate); 

Затем вы можете разложить свою дату с помощью метода format ()

 $year = $date->format('Y'); // returns a string 

Если вы предпочитаете числовой формат, вместо формата строки вы можете использовать функцию intval ()

 $year = intval($date->format('Y')); // returns an integer 

Вот некоторые форматы, которые вы можете использовать

  • Y Полное числовое представление года, 4 цифры
  • m Месяц года, 2 цифры с ведущими нулями
  • d День месяца, 2 цифры с ведущими нулями
  • H 24-часовой формат часа, 2 цифры с ведущими нулями
  • i Минуты, 2 цифры с ведущими нулями
  • s Seconds, 2 цифры с ведущими нулями

Здесь весь список форматов, которые вы можете использовать: http://php.net/manual/en/function.date.php