代码之家  ›  专栏  ›  技术社区  ›  Jack Roscoe

如何从完整的“日期”字符串中只提取“day”值?

  •  25
  • Jack Roscoe  · 技术社区  · 14 年前

    我有一个日期值数组,格式为 'Y-m-d' . 我想循环数组,只提取一天( 'd' )每一个成员,但无法解决分割它。我是否以某种方式使用子字符串?

    简单地说,我有 '2010-11-24' 我只想 '24' 从那开始。今天的问题可能是一位数或两位数。

    7 回复  |  直到 6 年前
        1
  •  64
  •   Pekka    14 年前

    如果您有php<5.3,请使用 strtotime() :

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

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

     $string = "2010-11-24";
     $date = DateTime::createFromFormat("Y-m-d", $string);
     echo $date->format("d");
    
        2
  •  5
  •   jensgram    14 年前
    $date = '2010-11-24';
    list($y, $m, $d) = explode('-', $date);
    

    Demo ,文档打开 explode() .

    甚至

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

    Demo ,文档打开 substr() strrpos() .

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

        3
  •  0
  •   Marek Augustyn    14 年前
    php> $d = '2010-11-24';
    '2010-11-24'
    php> $fields = explode('-', $d);
    array (
      0 => '2010',
      1 => '11',
      2 => '24',
    )
    php> $fields[2];
    '24'
    
        4
  •  0
  •   martynthewolf    14 年前
    <?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);
    
    ?>
    
        5
  •  0
  •   Frank Muñoz    8 年前
    $string = "2010-11-24";
    $date = new DateTime($string);
    echo date_format($date, 'd');
    
        6
  •  0
  •   kenorb    8 年前

    尝试使用 date_parse_from_format 例如:

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

    壳牌公司测试:

    $ php -r "echo date_parse_from_format('Y-m-d', '2010-11-24')['day'];"
    24
    
        7
  •  0
  •   Stephen Ngethe    6 年前

    $dt=“2008/02/23”;

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