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

Учитывая следующее timestring:

$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 год.

Спасибо

Ответы

Ответ 1

Вы можете использовать strtotime для анализа строки времени и передать полученную временную метку 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, с которой вы столкнулись раньше.

Ответ 2

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

<?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    
?>

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

Ответ 3

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

$dateValue = strtotime($q);                     

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

Ответ 4

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

$dateFormat = 'Y-m-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 Секунды, 2 цифры с ведущими нулями

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