В коде контроллера Php 'date_added' уже существует, и я создал 'date_sla' для текущей даты. В моем аут по отдельности оба работают нормально, но когда я использую для расчета результата разницы, штраф в течение месяца. когда месяц изменяет это показывает отрицательные числа как (3-1-2017) - (31-12-2016) = -28 днейPhp Timestamp с отрицательными значениями при изменении месяца
foreach ($results as $result) {
$action = array();
$action[] = array(
'text' => $this->language->get('text_view'),
'href' => $this->url->link('sale/order/info', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL')
);
if (strtotime($result['date_added']) > strtotime('-' . (int)$this->config->get('config_order_edit') . ' day')) {
$action[] = array(
'text' => $this->language->get('text_edit'),
'href' => $this->url->link('sale/order/update', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL')
);
}
$this->data['orders'][] = array(
'order_id' => $result['order_id'],
'customer' => $result['customer'],
'status' => $result['status'],
'total' => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
'date_sla' => date($this->language->get('date_format_short'), time()),
'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
'selected' => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']),
'action' => $action
);
}
Html код
<td class="right"><?php echo $order['date_sla'] - $order['date_added']." days";?></td>
Какая часть из вас думали, что делать вычитание на 2 строки когда-либо будет хорошей идеей. Вы получаете 28 из этого вычитания, потому что '3 - 31' -' -28'. Когда вы выполняете математику по строкам, она преобразует строку в число до тех пор, пока не найдет нечисловое значение (то есть первое пространство или '-') в строке поэтому '3 - 31' – RiggsFolly
Я также предполагаю, что вы сохранили даты как TEXT или VARCHAR в своей базе данных. Начните снова и используйте типы данных DATETIME или TIMESTAMP для дат и времени. Только конвертировать в строку в слое презентации, когда это необходимо – RiggsFolly
Я получил вашу мысль. Возможно, я создал этот $ order ['date_sla'] в неправильном месте. дайте мне некоторое время, я перейду еще раз. И не возражайте, если будут какие-то глупые ошибки, сделанные мной. Я новичок в Php. Спасибо за вашу помощь. –