В Пнд, 11/09/2006 в 16:52 +0400, Max Dmitrichenko пишет: > В сообщении от 11 Сентябрь 2006 14:33 Покотиленко Костик написал(a): > > > Всю жизнь использовал time(). > > Это зависит от задачи, которую решаешь. Вывести пользователю текущее время, то > хватит и time().
Почти согласен. > > Тебе какая почность то нужна? > > Дело тут даже не в точности, а в адекватности. Если у тебя расхождение больше > чем > секунда, то это уже неадекватность. Вполне возможно. Если не секрет, какая задача? > > Кстати, прыжки времени (особенно сильные) это далеко не штатная ситуация, и > > пытаться отследить их я бы не стал. > > Не, ну нормально. Взял ты ноутбук. Прилетел в Нью-Йорк, сменил часовой пояс. > Время прыг-скок и у тебя половина демонов накрылась. Потому что у них в доке > написано, что переставлять время - это нештатная ситуёвина. Прикольно, да? :) > Собственно, так как описанный сценарий мне ни разу в жизни не встречался, то > беру на себя смелось заключить, что эта ситуация штатная. Прикольно то, что дела обстоят не так, как Вы написали :) Функция time() возвращает количество секунд с начала 1970 года в UTC (GMT). И все нормальные программы с этим временем и работают. А вот когда надо это время наружу выдать для пользователя (например в логи) тогда идут в ход другие функции, которые переводят время в формат удобочитаемый для пользователя (тут уже учитывается и часовой пояс и локаль). Так что, если Вы со своим ноутбуком прилетели в Нью-Йорк и сменили часовой пояс то прыжёк времени Вы увидете в логах, выводе команды date и т.п., но не увидете его в значении, возвращаемом time(). > > Тем более, что если стоит ntp, это некая гарантия, что прыжки не будут > > превышать какую-то небольшую велечину. > > Это никакая не гарантия. А если ntp был какое-то время в отключке? А если у > тебя несколько дней не было сети? Первое же выравнивание времени после такого > может реально скакнуть на дцать секунд. Есть компьютеры, на которых время "уходит" более чем на секуду в сутки. Мне они встречались не так уж и редко. На них, как бы Вы не крутили, точную разницу Вы не пощитаете. > > time() - это стандартное решение для всех (если не ошибаюсь) *unix*ов, и > > не надо задумываться. Иначе можно дойти до програмного ECC памяти :-). > > Не надо сравнивать действия юзера и ECC памяти. Если бы память была хоть в > чём-то похоже на юзера, то плакали бы мы все горькими слезами. :) И молись, > чтобы так никогда не стало. По моему, проще пользоваться time() и постараться чтобы время не прыгало (проверить железо, настроить ntpd). -- Покотиленко Костик <[EMAIL PROTECTED]> -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]