Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   1126647953.331 - это дата и походу даже чилсо, или наоборот. (http://forum.oszone.net/showthread.php?t=53819)

xamelion 14-09-2005 06:29 355332

1126647953.331 - это дата и походу даже чилсо, или наоборот.
 
1126647953.331 1000 192.168.55.100 TCP_MISS/000 0 GET http://auto.search.msn.com/response.asp? - NONE/- -
1126647953.878 15 192.168.55.100 TCP_HIT/200 2441 GET http://www.ya.ru/ - NONE/- text/html
1126647953.994 115 192.168.55.100 TCP_HIT/200 1597 GET http://img.yandex.ru/i/logo76x44.gif - NONE/- image/gif
1126647955.710 43 192.168.55.100 TCP_HIT/200 2651 GET http://img.yandex.ru/i/fp2_morda.js - NONE/- application/x-javascript


собственно САБЖ.
как из первой строки лога squid получить нормальную дату.. либо время в php.
-/-/-/-/-/-/-/-/
1. Timestamp
The time when the client socket is closed. The format is 'Unix time' (seconds since Jan 1, 1970) with millisecond resolution. This can be modified to visible format by 'cat access.log | perl -nwe 's/^(\d+)/localtime($1)/e; print';.
-/-/-/-/-/-/-/-/
http://squid.visolve.com/squid/squid...htm#access.log

ну а как вот перевести эту так называюмую дату или число я незнаю... перерыл все форумы.. перерыл все поисковики.. на шеле скрипт нашел.. на шеле скрипт который загоняет в mysql уже готовые даты тоже нашел.. на перле нашел.. а php умеет ? обязательно должна быть какая нить функция....
P.S. Только цифры в первом ряду почему то всегда с точкой ????

mar 14-09-2005 08:25 355356

Цитата:

перерыл все форумы.. перерыл все поисковики.
А почему не зашли в единственное нужное место: на php.net???
А для поиска - подсказка - :) Ключевые слова Unix Epoch
И тогда имеем работающую пару функций getdate() и date():
PHP код:

$d=getdate(1126647953.331);
echo 
date($d); 

Или вытаскиваете нужные переменные полученного в результате getdate() массива:
PHP код:

$my_date=$d[mday]. ' '$d[month]. ' '$d[year]; // ну и так далее, мне дальше лень :)
echo $my_date


xamelion 14-09-2005 15:43 355468

mar
Огромное спасибо, на php.net я был, и скорее всего видел эти команды.. но в примерах не нашел что бы из цифр в человеческий вид вытаскивалось все... и очень сильно меня засмущала точка.
еще раз спасибо.
да и похорошему я запутался вот в чем.

gmdate - форматирует GMT/CUT дату/время
gmmktime - получает UNIX timestamp для GMT-даты
gmstrftime - форматирует GMT/CUT дату/время в соответствии с локальными установками
time - возвращает текущий UNIX timestamp
JDMonthName - возвращает название месяца
JDToFrench - конвертирует Julian Day Count во French Republican Calendar
JDToGregorian - конвертирует Julian Day Count в Григорианскую дату
JDToJewish - конвертирует Julian Day Count в Еврейский календарь
JDToJulian - конвертирует Julian Day Count в дату Юлианского календаря
jdtounix - конвертирует Julian Day Count в UNIX timestamp
JewishToJD - конвертирует дату Еврейского календаря в Julian Day Count
JulianToJD - конвертирует дату Julian Calendar в Julian Day Count
unixtojd - конвертирует UNIX timestamp в Julian Day Count
cal_days_in_month - возвращает количество дней в месяце для данного года и календаря
cal_from_jd - конвертирует из Julian Day Count в поддерживаемый календарь и возвращает расширенную информацию
cal_info - возвращает информацию об определённом календаре
cal_to_jd - конвертирует из поддерживаемого календаря в Julian Day Count
easter_date - получает UNIX timestamp для полуночи Easter данного года
easter_days - получает количество дней после 21 марта до дня, на который выпадает Easter, для данного года
FrenchToJD - конвертирует дату из French Republican Calendar в Julian Day Count
GregorianToJD - конвертирует Григорианскую дату в Julian Day Count
JDDayOfWeek - возвращает день недели
JDMonthName - возвращает название месяца

Я кроме календаря который в виндах и который на стенки у меня дома висит и невидил отродясь...
Еще раз спасибо огромное за то что помогли...

mar 14-09-2005 17:41 355492

не за что :)
Unix Epoch - время в секундах с 1 января 1970 года, то есть с начала "Эпохи" :) - это естественное понятие в unix, ну и соответственно, в логах запросто может встречаться. Просто, когда работаешь под unix - это очевидно, и, соответственно, шансов запутаться в функциях даты-времени меньше :).

xamelion 14-09-2005 20:41 355537

я еще кое что хотел бы спросить с вашего позваления... если это дата, то где тогда время ? или это и есть и дата и время... хотя логично.. если это в секундах то само собой должно быть там и время... тогда вопрос снимается.. попробую вытащить от туда хотя бы время.
еще раз спасибки.

mar 14-09-2005 23:10 355577

это именно секунды от той самой начала эпохи. Вытаскивается все довольноипросто (в примере выше я просто не довела до конца). Подробности про массив, получаемый в результате работы функцииgetdate():
Цитата:

<?php
$today = getdate();
print_r($today);
?>

The above example will output something similar to:

Array
(
[seconds] => 40
[minutes] => 58
[hours] => 21
[mday] => 17
[wday] => 2
[mon] => 6
[year] => 2003
[yday] => 167
[weekday] => Tuesday
[month] => June
[0] => 1055901520
)
В Вашем случае имеем:
PHP код:

$logtime getdate(1126647953.331);
$logseconds $logtime[seconds];
$logminutes $logtime[minutes];
/* и так далее - весь массив */ 


xamelion 15-09-2005 22:16 355797

Огромное спасибки.


Время: 13:34.

Время: 13:34.
© OSzone.net 2001-