【问题标题】:How to convert a date array that was returned from date_parse back into a date string如何将从 date_parse 返回的日期数组转换回日期字符串
【发布时间】:2012-07-04 14:02:51
【问题描述】:

我有一个日期数组,其格式由 php 例程 date_parse 返回。我需要将此日期数组转换回日期字符串。

我正在寻找一个与 date_parse 例程相反的函数。这是一个接受日期数组作为参数并返回日期字符串的函数。

http://php.net/manual/en/function.date-parse.php

我拥有的日期数组有时只有“年”、“月”和“日”的值。其他时候,它将具有“年”、“月”、“日”、“小时”、“分钟”和“秒”的值。如果缺少小时、分钟和秒值,我希望例程会返回一个日期字符串,其中字符串的小时、分钟和秒部分为 00:00:00。

我花了一些时间搜索,但到目前为止还没有找到与date_parse相反的函数。

【问题讨论】:

    标签: php arrays string date


    【解决方案1】:

    我一直在寻找相同问题的答案,但找不到。我在the PHP documentation 中使用date()mktime() 找到了一些示例,并提出了这个...

    $date_array = date_parse($date_string);
    
    // returns original date string assuming the format was Y-m-d H:i:s
    $date_string = date('Y-m-d H:i:s', mktime($date_array['hour'], $date_array['minute'], $date_array['second'], $date_array['month'], $date_array['day'], $date_array['year'])); 
    

    我对此进行了测试,如果小时、分钟和秒未传递给mktime(),字符串将包含您想要的零。

    【讨论】:

      【解决方案2】:

      嗯,我能找到的最好方法就是使用 sprintf...mktime 需要设置时间区域,而且我也不喜欢通过时间戳来格式化日期。

      所以,只需打印格式化的字段:

      // Parse from YYYY-MM-DD to associative array
      $date = date_parse_from_format("Y-m-d", "2014-07-15");
      // Write back to DD/MM/YYYY with leading zeros
      echo sprintf("%02d/%02d/%04d", $date["day"], $date["month"], $date["year"]);
      

      编辑:但如果您需要,此解决方案需要进行一些调整,例如,仅打印一年的最后 2 位数字(例如从 1984 年到“84”)。

      【讨论】:

      • 没有太多的调整......只要做$date["year"] % 100,你会很快得到最后两位数字。
      【解决方案3】:

      我在表单中使用了日期选择器,返回格式是一个数组:

      [开始] => 数组 ([月] => 04 [日] => 26 [年] => 2016 [小时] => 05 [分钟] => 54 [经线] => 下午) [结束] => 数组([月] => 04 [日] => 26 [年] => 2016 [小时] => 05 [分钟] => 54 [经线] => 下午)

      将该数组转换为日期对象的方法如下:

      $timeArray = $this->request->data['Task']['start'];
      $start = $this->Task->deconstruct('start', $timeArray);
      

      我的模型是“任务”,日期数组的键是“开始”,这两个字段需要你自己替换。

      而日期对象的输出是:

      2016-04-26 17:54:00
      

      参考:How best to convert CakePHP date picker form data to a PHP DateTime object?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-17
        • 2019-07-13
        • 1970-01-01
        • 2019-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多