SA-MP Forums Archive
Unix время - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: Unix время (/showthread.php?tid=345343)



Unix время - serpip - 24.05.2012

В каком часовом поясе выводится unix время в функции gettime(); ?

PHP код:
printf("дата %s",date("%dd.%mm.%yyyy в %hh:%ii:%ss",gettime())); 
если сделать такой код с использованием инклуда mxDate, то у меня время показывает +3ч к настоящему времени


Re: Unix время - Stepashka - 24.05.2012

Время сервера.


Re: Unix время - TriskeliS - 24.05.2012

Quote:
Originally Posted by serpip
Посмотреть сообщение
В каком часовом поясе выводится unix время в функции gettime(); ?
Вообще Unix время по GMT, но видимо на сервере оно с учетом часового пояса и твой нкллуд прибавляет к нему еще раз часовой пояс.
Как вариант можно попробовать:
PHP код:
printf("дата %s",date("%dd.%mm.%yyyy в %hh:%ii:%ss",gettime()-10800)); 
10800 - 3 часа в секундах.


Re: Unix время - Stepashka - 25.05.2012

Quote:
Originally Posted by TriskeliS
Посмотреть сообщение
Вообще Unix время по GMT, но видимо на сервере оно с учетом часового пояса
Unix не связан с GMT и не имеет понятия о том что это, оно связано только с настройками сервера.
В данном случае сервер находится в часовом поясе +3 и настроен соответственно.


Re: Unix время - serpip - 25.05.2012

дело в том что если сделать вот так
PHP код:
new HourMinuteSecond;
gettime(HourMinuteSecond);
printf("%02d:%02d:%02d"HourMinuteSecond); 
то покажет нормальное время а если
PHP код:
printf("дата %s",date("%dd.%mm.%yyyy в %hh:%ii:%ss",gettime())); 
то покажет время +3ч


Re: Unix время - Stepashka - 25.05.2012

Quote:
Originally Posted by serpip
Посмотреть сообщение
дело в том что если сделать вот так
PHP код:
new HourMinuteSecond;
gettime(HourMinuteSecond);
printf("%02d:%02d:%02d"HourMinuteSecond); 
то покажет нормальное время а если
PHP код:
printf("дата %s",date("%dd.%mm.%yyyy в %hh:%ii:%ss",gettime())); 
то покажет время +3ч
Значит ошибка в date().
А зачем тебе эта функция когда ты можешь просто получить текущую дату getdate?


Re: Unix время - serpip - 25.05.2012

что значит ошибка в date()? скачай инклуд тут и посмотри сам. функция нужна для сохранения даты и времени в файл для системы бана по времени


Re: Unix время - Stepashka - 25.05.2012

Quote:
Originally Posted by serpip
Посмотреть сообщение
что значит ошибка в date()? скачай инклуд тут и посмотри сам. функция нужна для сохранения даты и времени в файл для системы бана по времени
А почему не использовать просто unixtime, c integer числом проще работать нежели с форматированной строкой?


Re: Unix время - dimonml - 25.05.2012

Чтобы был предметный разговор: приведи что вернут эти строчки:
PHP код:
new HourMinuteSecond;
new 
posix gettime(HourMinuteSecond);
printf("%02d:%02d:%02d posix=%d"HourMinuteSecondposix); 



Re: Unix время - serpip - 25.05.2012

Код:
PHP код:
    new HourMinuteSecond;
    new 
posix gettime(HourMinuteSecond);
    
printf("%02d:%02d:%02d posix=%d. Unix time: %s"HourMinuteSecondposixdate("%dd.%mm.%yyyy в %hh:%ii:%ss",posix)); 
Результат:
PHP код:
11:15:25 posix=1337933725. Unix time25.05.2012 в 14:15:25 



Re: Unix время - dimonml - 25.05.2012

Вполне ожидаемый и правильный результат (со стороны сампа). Функции date в сампе нет, так что за нее ничего не скажу:
Код:
$ date --rfc-2822 --utc --date=@1337933725
Fri, 25 May 2012 08:15:25 +0000
(учитывая озвученные тобой +3 часа в твоем часовом поясе) все сходиться

gettime возвращает unix time (posix time, Unix Epoch и др): это количество секунд прошедших с 1 января 1970 года по Гринвичу, без учета високосных секунд.

Если ты в gettime() передаешь еще аргументы, то они заполняются локальным временем.

апд: мне кажется для озвученных целей реально число возвращаемое gettime удобнее, чем форматированная строка.


Re: Unix время - serpip - 25.05.2012

да ладно, просто от значения отнять 3 часа и все, делов то). Значит там время в 0 часовом поясе