【问题标题】:Convert date time string to array php将日期时间字符串转换为数组php
【发布时间】:2019-05-15 10:38:34
【问题描述】:

我有一个日期时间字符串2018-12-05 03:05:43 我如何将其转换为这种格式的数组:

[2018, 12, 5, 3, 5, 43]

【问题讨论】:

  • date('Y'), date('m')
  • 这些答案之一是否解决了您的问题?如果没有,您能否提供更多信息来帮助回答?否则,请考虑将最能解决您的问题的答案标记为已接受。见stackoverflow.com/help/someone-answers

标签: php arrays datetime


【解决方案1】:

您可以使用 PHP 的 DateTime 类解析日期并分别输出每个组件:

$date = date_create_from_format('Y-m-d H:i:s', '2018-12-05 03:05:43');
$array = array(
    (int)$date->format('Y'),
    (int)$date->format('m'),
    (int)$date->format('d'),
    (int)$date->format('H'),
    (int)$date->format('i'),
    (int)$date->format('s')
    );
print_r($array);

输出:

Array ( 
    [0] => 2018
    [1] => 12
    [2] => 5
    [3] => 3
    [4] => 5
    [5] => 43
)

Demo on 3v4l.org

【讨论】:

    【解决方案2】:

    你可以使用explode()和merge()

    $tmp1 = explode(' ', '2018-12-05 03:05:43');
    $tmp2 = explode('-', $tmp1[0]);
    $tmp3 = explode(':', $tmp1[1]);
    
    $merge = array_merge($tmp2, $tmp3); 
    

    【讨论】:

      【解决方案3】:

      您也可以使用正则表达式。

      该模式找到一个可选的零和任何数字。
      零不是捕获的一部分,因此不会出现在 [1] 数组中。

      $str ="2018-12-05 03:05:43";
      
      preg_match_all("/0*(\d+)/", $str, $arr);
      $arr = $arr[1]; // only keep the capture
      var_dump($arr);
      

      输出:

      array(6) {
        [0]=>
        string(4) "2018"
        [1]=>
        string(2) "12"
        [2]=>
        string(1) "5"
        [3]=>
        string(1) "3"
        [4]=>
        string(1) "5"
        [5]=>
        string(2) "43"
      }
      

      https://3v4l.org/1sGSR

      【讨论】:

        猜你喜欢
        • 2018-03-29
        • 2012-05-21
        • 2016-02-18
        • 1970-01-01
        • 2022-08-18
        • 2015-09-17
        • 2011-09-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多