【问题标题】:PHP - How to get year, month, day from time stringPHP - 如何从时间字符串中获取年、月、日
【发布时间】:2021-01-15 11:27:31
【问题描述】:

给定以下时间字符串:

$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。

谢谢

【问题讨论】:

    标签: php


    【解决方案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 - 如何从时间字符串中获取年、月、日

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

      【讨论】:

      • 它是一种代码实践来解释答案,以便未来的读者可以受益
      【解决方案3】:

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

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

      希望这会让你继续前进!

      【讨论】:

        【解决方案4】:

        使用面向对象的编程风格,您可以通过 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

        【讨论】:

          【解决方案5】:

          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.';
              }
          
          

          【讨论】:

          • 接受的答案已经建议使用 9f strtotime()。 OP 没有询问如何使用 date() 使用不同的格式。请不要不必要地膨胀旧页面。
          猜你喜欢
          • 1970-01-01
          • 2022-08-15
          • 1970-01-01
          • 2020-12-19
          • 1970-01-01
          • 2012-03-17
          • 2023-03-16
          • 2016-07-27
          • 2016-07-24
          相关资源
          最近更新 更多