8

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

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

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

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

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

4

3 回答 3

7

我一直在寻找相同问题的答案,但找不到。我在PHP 文档中使用date()and找到了一些示例,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().

于 2013-07-12T04:07:49.060 回答
1

好吧,我能找到的最好的方法就是使用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”)。

于 2014-08-15T10:04:35.710 回答
0

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

[开始] => 数组 ([月] => 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

参考:如何最好地将 CakePHP 日期选择器表单数据转换为 PHP DateTime 对象?

于 2016-04-26T23:48:48.380 回答