Ошибка работы со временем

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
Barssoft
Сообщения: 726
Зарегистрирован: 2013.01.21, 16:03

Ошибка работы со временем

Сообщение Barssoft »

Суть проблемы такая, у меня есть заявка, которая имеет 3 статуса, при смени статуса в бд записывается текущее время функцией time(), Делаю функцию высчитывания отчета по времени заявки, столкнулся с проблемой, что при математических операциях время показывается не правильно, врет на 1 день и 3 часа, подскажите что ни так

Код: Выделить всё

public static function timer($model)
    {
        switch($model->status){
            case 0:
                return '(1) Время ожидания: '.date('H:i:s',(time()-$model->date_create));
            break;
            case 1:
                return '(1) Время ожидания: '.date('H:i:s',($model->date_works-$model->date_create)).' - (2)Время в работе: '.date('H:i:s',(time()-$model->date_works));
            break;
            case 2:
                return '(1) Время ожидания: '.date('H:i:s',($model->date_works-$model->date_create)).' - (2)Время в работе: '.date('H:i:s',($model->date_close-$model->date_works));
            break;
            case 3:
                return 'Ошибочная заявка';
            break;
            default :
            break;
        }
    }
 
IStranger
Сообщения: 36
Зарегистрирован: 2011.11.04, 10:46
Контактная информация:

Re: Ошибка работы со временем

Сообщение IStranger »

В операндах timestamp лежит ?
Я б не стал использовать date в этом случае, т.к. тебе ведь надо (как я понял) временные интервалы форматировать, а не абсолютное время.
Эта функция работает с timestamp, а не с количеством секунд. Так что проблема скорее всего в том, что:

Код: Выделить всё

timestamp - timestamp != timestamp
timestamp + timestamp != timestamp
Если конкретнее, при форматировании абсолютного времени учитываются локали/часовые пояса, високосные года, а также наверное секунды координации, и много чего еще

UPD:
Может вот это помочь:
https://php.net/manual/ru/class.dateinterval.php
Ну и вот тут много чего полезного виднеется:
https://php.net/manual/ru/book.datetime.php
G.Azamat { Web Development / Computer simulation }
Начинающий программист думает, что в килобайте 1000 байтов, а законченный уверен, что в километре 1024 метра.
Ответить