-
Notifications
You must be signed in to change notification settings - Fork 52
Новый Timestamp (+BC) #107
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
добавьте тест для даты "1-04-03" ну или "0001-04-03" |
хотя нет именно для разных вариантов. и для "1-04-03" и для "0001-04-03" |
для года 2 и 1 знак, результаты будут разные а для 3 и 4 знака в значении года - результаты будут одинаковые в старой и новой версиях. |
$this->dateTime = new DateTime(date($this->getFormat(), $date)); Должно быть $this->dateTime = new DateTime("@$date"); Тогда DateTime не потеряет временную зону которая регламентированна настройками php. Пруф из документации: Замечание: Значение аргумента $timezone равно как и текущая временная зона не будут учитываться, если в качестве аргумента $time передается метка времени UNIX (напрмер @9466848) или время, в котором временная зона уже содержится (например 2010-01-28T15:00:00+02:00) |
sleep и wakeup не поломался? в текущей реализации сохраняется только int |
1-04-03 это можно трактовать как 2001-04-03 или же 1-04-03 что правильно ? Как быть ? :-) |
Обошел это проставлением дефолтовой зоной в конструкторе :-) |
Это не обошел, это выстрел в ногу. |
Эт почему-же ? |
я считаю что правильно текущее поведение, т.е. первый год |
Помимо еще недосказанного @neemah, тут, видимо нужно сделать метод __clone, что бы |
Согласен, сделаю. |
По поводу моего коммента: я конечно же не настаиваю, но если есть документированная операция создания объекта DateTime на основе unix timestamp и гарантированно дающая правильный результат (даже тесты не нужны), то нет смысла в дополнительной операции date(). |
Ну я думаю что явно оно яснее, нагляднее, а date т.к. DateTime в явном виде не умеет работать с UNIX time stamp-ом по этому небольшой оверхеад, хотя тут можно поспорить мож @... дольше выполняется ))) |
Собсно подумал и пришел к тому что все-же даты вида [1-9, 01-99]-month-day Собсно в тестах учел. |
по поводу "@..." не стал этого делать, вместо этого у нас unixtimestamp приводится к дате с помощью функции date() а дефолотовая зона ставиться в самом конструкторе, если не пришол DateTimeZone |
Интересная тема, собака с unix timestamp у меня по тестам реально работает медленнее: http://pastebin.com/Qebk3Li3 В общем смотрите сами :) |
Добрался до тестирования этого реквеста.
|
Все блин смотрю и смотрю по вечерам на этот реквест и никак не замержу. <?php
$prm = Primitive::timestampTZ('ttt');
$prm->import(array('ttt' => '2012-01-01 22:22:22-0004'));
$export = $prm->exportValue(); в export строке данные были в той же таймзоне что и во время импорта? Ах да. Помоему для тестов в test/config.inc.php.tpl надо принудительно прописывать одну конкретную дефолтную таймзону. |
Да дефолтная timezone должна быть, иначе кажеться будет взята зона с сервера по умолчанию.
мы вроде как уже это обсуждали, если мне не изменяет память, и пришли к тому что возвращаем в той timezone в котором сейчас сервер (с правильным смещением) |
Отловил что на 32-битных системах не корректно работают sleep - wakeup в текущем варианте - через int. |
Добавил что б в тестах ставилась дефолтная временная зона Europe/Moscow. |
Еще разок сделал rebase и склеил в один коммит. Ну вроде можно нажимать кнопочку merge и писать doc/ChangeLog |
Update Timestamp (+BC) + TimestampTZ
У нас начиная с PHP5.2 >= есть поддержка DateTime & DateTimeZone
Собственно теперь Timestamp просто контейнер с доп функциями.
Тесты все работают, BC не нарушенно.