PHP - 如何从时间字符串中获取年,月,日

时间:2010-08-31 03:51:39

标签: 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年。

谢谢

5 个答案:

答案 0 :(得分:31)

您可以使用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日期。

答案 1 :(得分:10)

更新:忘记在第一行末尾添加分号,试试这个:

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

希望这会让你前进!

答案 2 :(得分:9)

PHP - 如何从时间字符串中获取年,月,日

$dateValue = strtotime($q);                     

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

答案 3 :(得分:1)

使用面向对象的编程风格,您可以使用 DateTime class

执行此操作
$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

答案 4 :(得分:-2)

PHP - 我们可以从多种格式的时间字符串中获取年、月、日。

$dateFromDb = '2021-2-6 13:15:19';

if (($timestamp = strtotime($dateFromDb)) !== false) {
    // auto format full time
    $php_date = getdate($timestamp);
    echo '<br>';
    foreach($php_date as $key =>$value){
        echo $key.'='.$value.'<br>';
    }

    // manually format time
    echo'-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-<br>';
    echo '4 digit year =            '.date("Y", $timestamp).'<br>';
    echo '2 digit year =            '.date("y", $timestamp).'<br>';
    echo 'Month =                   '.date("m", $timestamp).'<br>';
    echo 'Day =                     '.date("d", $timestamp).'<br>';
    echo 'Time in 24 Hours Format = '.date("H", $timestamp).'<br>';
    echo 'Time in 12 Hours Format = '.date("h", $timestamp).'<br>';
    echo 'Minutes =                 '.date("i", $timestamp).'<br>';
    echo 'Seconds =                 '.date("s", $timestamp).'<br>';
    echo '-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_- <br>';
    // and we can combine format also.
    // and we can add '/' or ':' between year,month,days or anything we want.
    echo 'Time =  ' .date("H:i:s" ,$timestamp).'<br>';
    echo 'Date =  ' .date("d/m/Y" ,$timestamp).'<br>';

    } else {
        echo 'invalid date format.';
    }