如何使用PHP将包含日期+时间的API端点的输出存储在数组中?

时间:2017-10-09 20:40:19

标签: php api

我是初学者,学习PHP。我正在尝试调整其他人编写的PHP代码,该代码从API检索数据并将其显示在Web服务器上的PHP应用程序中。

以下是我正在尝试操作的第三方应用的代码示例:

 map(dataNested$data, helper_hist)

$ row-> fuelExpires;变量,API端点返回格式如下的日期:

<tbody>
                        <?php foreach($citadelData->result() as $row) { ?>
                            <tr>
                                <td><?php echo $row->corporationname; ?></td>
                                <td style="white-space:nowrap;"><?php echo $row->name; ?></td>
                                <td><?php echo $row->sys_name; ?></td>
                                <td><?php echo $row->con_name; ?></td>
                                <td><?php echo $row->reg_name; ?></td>
                                <td><?php echo $row->services; ?></td>
                                <td><?php echo $row->ConsumesFuel; ?></td>
                                <td><?php echo $row->typename; ?></td>
                                <td><?php echo $row->stateTimerStart; ?></td>
                                <td><?php echo $row->stateTimerEnd; ?></td>
                                <td><?php echo $row->fuelExpires; ?></td>                                  
                            </tr>

我试图理解如何存储这些数据,以便我可以丢弃部分数据并在屏幕上以不同方式对其进行格式化。我认为我想使用数组,但我不知道如何将数据存储为数组。

我想要达到的最终结果是将上述日期变为

2017-12-16 15:00:00

我是否应该尝试将日期存储在数组中以便能够操作数据以将其转换为我的最终格式,或者我是否以错误的方式解决此问题?

1 个答案:

答案 0 :(得分:0)

首先要获得一个间隔作为天数你需要两个日期,所以我假设除了 fuelExpires 日期之外你还有某种燃料开始日期。

根据您发布的代码,我还假设从数据库中逐行读取此数据,并且每行显示其字段。关键是如果 fuelExpires 字段被读作DateTime对象,那么你可以使用PHP date_diff 函数:

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$interval = date_diff($datetime1, $datetime2);
echo $interval->format('%R%a days');
?>

或者,如果 fuelExpires 是文本字符串,您可以创建一个DateTime对象,如代码snipet中所示。顺便说一句,我从PHP手册中获得了代码片段,您可以在http://php.net/manual/en/datetime.diff.php

找到它

修改

要将当前日期用作开始数据,您需要按照以下方式执行操作:

<?php

$datetime1 = new DateTime();
$datetime1->setTimestamp(time());

// if fuelExpires is DateTime object
$datetime2 = $row->fuelExpires;

// if fuelExpires is text string object
$datetime2 = date_create($row->fuelExpires);

$interval = date_diff($datetime1, $datetime2);

echo $interval->format('%a days, %h hours');
?>

请注意,此代码可能无法完全正常运行,因为我已将其排除在头顶并且无法检查它。