Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Конвертирование unix времени в понятную дату

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Как конвертировать unix времени в понятную дату?
kshpak
Отправлено: 08 Октября, 2014 - 14:28:04
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Всем привет!
Помогите разобратся.
Для начала, хочу разобраться с конвертацией Unix даты.
В txt файле содержится столбик с Unix датою, как этот столбик конвертировать в понятную дату?
1410987763
1410987803
1410987813
1410987843
1410987883
1410987953
1410988003
1410988003
1410988033
1410988043
1410988153
...
 
 Top
3d_killer
Отправлено: 08 Октября, 2014 - 14:31:53
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




PHP:
скопировать код в буфер обмена
  1. $date='1410987763';
  2. echo date("Y-m-d H-i-s", $date);

(Отредактировано автором: 08 Октября, 2014 - 14:33:01)

 
My status
 Top
kshpak
Отправлено: 08 Октября, 2014 - 14:35:31
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




3d_killer пишет:
PHP:
скопировать код в буфер обмена
  1. $date='1410987763';
  2. echo date("Y-m-d H-i-s", $date);


Спасибо за ответ, но данный пример конвертирует только конкретное значение '1410987763', а как конвертировать весь столбик?
 
 Top
3d_killer
Отправлено: 08 Октября, 2014 - 14:37:30
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




ну вначале разбей этот столбик в массив, а потом перебором преобразуй в необходимый вид или выведи
 
My status
 Top
kshpak
Отправлено: 08 Октября, 2014 - 20:12:55
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




3d_killer пишет:
ну вначале разбей этот столбик в массив, а потом перебором преобразуй в необходимый вид или выведи

Данные в масив загнать както получилось, а вот как перебрать все значения масива не придумаю. Если указать конкретный елемент массива то работает. Если же указать весь масив то ошибка в логе " PHP Warning: date() expects at most 2 parameters, 3 given in "
$strs = file('/home/kshpak/Script/doc.txt');
foreach($strs as $s) {
$m = explode(';', $s);}
print_r($m);
echo date("Y-m-d H-i-s", $m[1]); // так работает
echo date("Y-m-d H-i-s", $m); // так ошибка " PHP Warning: date() expects at most 2 parameters, 3 given in "

(Отредактировано автором: 08 Октября, 2014 - 20:14:43)

 
 Top
teddy
Отправлено: 08 Октября, 2014 - 20:32:21
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




kshpak
А зачем делать explode? file() и так вернет массив каждый элемент которого будет содержать каждую строчку файла.

PHP:
скопировать код в буфер обмена
  1. $data= file('/home/kshpak/Script/doc.txt');
  2. foreach($data as $timestamp){
  3.     echo date('Y-m-d H-i-s', $timestamp);
  4. }

(Добавление)
Пользуйтесь функциями для отладки
 
 Top
kshpak
Отправлено: 09 Октября, 2014 - 22:28:19
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




teddy пишет:
kshpak
А зачем делать explode? file() и так вернет массив каждый элемент которого будет содержать каждую строчку файла.

PHP:
скопировать код в буфер обмена
  1. $data= file('/home/kshpak/Script/doc.txt');
  2. foreach($data as $timestamp){
  3.     echo date('Y-m-d H-i-s', $timestamp);
  4. }

(Добавление)
Пользуйтесь функциями для отладки


Спасибо, конвертирует успешно.
Только результат выводид с строчку, а не встолбик.
 
 Top
teddy
Отправлено: 09 Октября, 2014 - 23:02:27
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




kshpak пишет:
Только результат выводид с строчку, а не встолбик.

Можно например <br /> добавить.
echo date('Y-m-d H-i-s', $timestamp).'<br />';
 
 Top
kshpak
Отправлено: 10 Октября, 2014 - 06:29:02
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




teddy пишет:
kshpak пишет:
Только результат выводид с строчку, а не встолбик.

Можно например <br /> добавить.
echo date('Y-m-d H-i-s', $timestamp).'<br />';


Спасибо работает!
Помогите еще в решении более сложной задачи.
Обрабатываю лог файл Nagios до нужного мне вида:
$result = shell_exec("grep 'SERVICE ALERT' /home/kshpak/Script/nagios.log | sed 's/ SERVICE ALERT: /;/g; s/^.//g;s/]//g' | awk -F ';' '/WARNING|CRITICAL/ {print $1, $2, $3, $4}' > /home/kshpak/Script/count6.log");
Результат:
1410987763 Server1 CPU USAGE CRITICAL
1410987803 Server4 CPU USAGE WARNING
1410987813 Server2 MEMORY USAGE CRITICAL
1410987843 Server7 CPU USAGE CRITICAL
1410987883 Server1 MEMORY USAGE CRITICAL
1410987953 Server10 CPU USAGE WARNING

КАК В ДАННОМ СЛУЧАИ КОНВЕРТИРОВАТЬ ДАТУ???
 
 Top
3d_killer
Отправлено: 10 Октября, 2014 - 07:54:57
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




так как количество знаков в этом году меняться не будут бери 10 знаков каждой строки
 
My status
 Top
kshpak
Отправлено: 11 Октября, 2014 - 02:09:24
Post Id


Новичок


Покинул форум
Сообщений всего: 8
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




3d_killer пишет:
так как количество знаков в этом году меняться не будут бери 10 знаков каждой строки

Так и сделал, столбик с датой конвертирует. А как вывести все мне нужные столбики и уже преобразованую дату.
PHP:
скопировать код в буфер обмена
  1.  
  2. $aa = shell_exec("grep 'SERVICE ALERT' /home/kshpak/Script/nagios.log | sed 's/ SERVICE ALERT: /;/g; s/^.//g;s/]//g' | awk -F ';' '/WARNING|CRITICAL/' | cut -c-10 ");
  3. $array = array($aa);
  4. foreach($array as $s) {
  5. $m = explode("\n", $s);
  6. }
  7.  foreach($m as $timestamp){
  8.       echo date('Y-m-d H-i-s', $timestamp).'<br />';
  9.     }
  10.  

Думал сделать так, присвоить переменую $date=date('Y-m-d H-i-s', $timestamp); и сравнить ее с выводимым столбиком в awk {print $1=$date,}.
PHP:
скопировать код в буфер обмена
  1. $result = shell_exec("grep 'SERVICE ALERT' /home/kshpak/Script/nagios.log | sed 's/ SERVICE ALERT: /;/g; s/^.//g;s/]//g' | awk -F ';' '/WARNING|CRITICAL/ {print $1=$date, $2}'");

Но так не выходит. Просьба помочь в решении данной проблемы.

(Отредактировано автором: 11 Октября, 2014 - 02:17:00)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB