【问题标题】:How to extract only 'Day' value from full 'Date' string?如何从完整的“日期”字符串中仅提取“日”值?
【发布时间】:2010-11-25 09:43:38
【问题描述】:

我有一个格式为'Y-m-d' 的日期值数组。我想循环遍历数组,只提取每个成员的日期('d'),但不知道如何拆分它。我是否以某种方式使用子字符串?

简单地说,我有'2010-11-24',我想从中得到'24'。问题是当天可能是单数或两位数。

【问题讨论】:

    标签: php date


    【解决方案1】:

    如果您的 PHP strtotime():

    $string = "2010-11-24";
    $timestamp = strtotime($string);
    echo date("d", $timestamp);
    

    如果您的 PHP >= 5.3,请使用基于 DateTime 的解决方案,使用 createFromFormat - DateTime 是未来,可以处理 1900 年和 2038 年之后的日期:

     $string = "2010-11-24";
     $date = DateTime::createFromFormat("Y-m-d", $string);
     echo $date->format("d");
    

    【讨论】:

      【解决方案2】:
      $date = '2010-11-24';
      list($y, $m, $d) = explode('-', $date);
      

      Demoexplode() 上的文档。

      甚至

      $date = '2010-11-24';
      $d = substr($date, strrpos($date, '-') + 1);
      

      Demosubstr()strrpos() 上的文档。

      免责声明:两者都是老派!

      【讨论】:

        【解决方案3】:

        尝试使用date_parse_from_format,例如:

        date_parse_from_format('Y-m-d', '2010-11-24')['day'];
        

        在 shell 中测试:

        $ php -r "echo date_parse_from_format('Y-m-d', '2010-11-24')['day'];"
        24
        

        【讨论】:

          【解决方案4】:
          php> $d = '2010-11-24';
          '2010-11-24'
          php> $fields = explode('-', $d);
          array (
            0 => '2010',
            1 => '11',
            2 => '24',
          )
          php> $fields[2];
          '24'
          

          【讨论】:

            【解决方案5】:
            <?php
            
            $dates = array('2010-01-01', '2010-01-02', '2010-01-03', '2010-01-23');
            
            foreach ($dates as $date) {
                $day[] = substr($date, 8, 2);
            }
            
            var_dump($day);
            
            ?>
            

            【讨论】:

            • 取决于月份是 9 还是永远是 09
            • 如果我理解你的要求正确,那将只给你日期的一天部分。
            • 在建议的 Y-m-d 格式中,如果月份小于 10,m 将带有前导零,因此 01、02、03 等......
            • @martswite 我只是注意到 OP 说“问题是当天可能是单数或两位数。”本月可能也是如此。我不知道。
            • @jensgram 这很公平,我看到了格式并进入了超速状态。我是帮助解决疟疾的新手。看看其他人的滚动方式非常有趣。
            【解决方案6】:
            $string = "2010-11-24";
            $date = new DateTime($string);
            echo date_format($date, 'd');
            

            【讨论】:

              【解决方案7】:

              $dt = "2008/02/23";

              echo '今天是'。日期(“d”,strtotime($dt));

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-07-07
                • 2011-02-17
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多