Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830

Не работает пользовательская функция convert_date()

18.07.2011, 15:08. Показов 1396. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?php 
 
 
function convert_date($date,$mode=0)
{
  $months = array('нулября','января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря');
  if(preg_match('(^[0-9]+$)',$date))
  {
    if($mode == 2) return date('j ',$date).$months[date('n',$date)].date(' Y',$date).' г. в '.date('G:i', $date);
    elseif($mode == 3) return date('j ',$date).$months[date('n',$date)].date(' Y',$date).' г. в '.date('G:i:s', $date);
    $time = $mode ? '' : ' в '.date('G:i',$date);
    $delta = time() - $date;
    $future = $delta <= 0;
    $delta = abs($delta);
    if($delta <= 10) return $future ? 'Прямо сейчас' : 'Только что';
    elseif($delta < 60) return ($future?'Через ':'').lexica($delta,'секунду','секунды','секунд').($future?'':' назад');
    elseif($delta <= 3300) return ($future?'Через ':'').(round($delta/60) == 1 ? ($future?'минуту':'Минуту') : lexica(round($delta/60),'минуту','минуты','минут')).($future?'':' назад');
    elseif(date('Ymd',$date) == date('Ymd')) return $delta % 3600 >= 3300 || ($delta % 3600 <= 300 && $delta >= 3300) ? ($future?'Через ':'').(round($delta/3600) == 1 ? ($future?'час':'Час') : lexica(round($delta/3600),'час','часа','часов')).($future?'':' назад') : 'Сегодня'.$time;
    elseif(date('Ym',$date) == date('Ym')) { if($delta % 604800 >= 561600 || ($delta % 604800 <= 43200 && $delta >= 561600)) return ($future?'Через ':'').(round($delta/604800) == 1 ? ($future?'неделю':'Неделю') : lexica(round($delta/604800),'неделю','недели','недель')).($future?'':' назад'); else return $delta % 86400 >= 82800 || $delta % 86400 <= 3600 ? ($future?'Через ':'').(round($delta/86400) == 1 ? ($future?'день':'День') : lexica(round($delta/86400),'день','дня','дней')).($future?'':' назад') : (date('Ymd',$date) == date('Ymd',$future?(time()+86400):(time()-86400)) ? ($future?'Завтра':'Вчера') : (date('Ymd',$date) == date('Ymd',$future?(time()+172800):(time()-172800)) ? ($future?'Послезавтра':'Позавчера') : date('j',$date).' '.$months[date('n',$date)])).$time; }
    elseif(date('Y',$date) == date('Y')) return $delta % 2592000 >= 2505600 || ($delta % 2592000 <= 86400 && $delta >= 2505600) ? ($future?'Через ':'').(round($delta/2592000) == 1 ? ($future?'месяц':'Месяц') : lexica(round($delta/2592000),'месяц','месяца','месяцев')).($future?'':' назад') : date('j',$date).' '.$months[date('n',$date)].$time;
    else return $delta % 31536000 >= 28944000 || ($delta % 31536000 <= 2592000 && ($delta >= 28944000 && $delta >= 2592000)) ? ($future?'Через ':'').(round($delta/31536000) == 1 ? ($future?'год':'Год') : lexica(round($delta/31536000),'год','года','лет')).($future?'':' назад') : date('j',$date).' '.$months[date('n',$date)].' '.date('Y',$date).' г.';
  }
  else
  {
    $date = strtolower($date);
    if($date == 'прямо сейчас' || $date == 'только что') return time();
    elseif(preg_match('(^(через |)([0-9]+ |)(секунд[а-я]*|минут[а-я]*|час[а-я]*|день|дня|дней|недел[а-я]|месяц[а-я]*|год|года|лет)(| назад)$)i',$date,$temp))
    {
      $future = $temp[1] == 'через ';
      if($temp[3] == 'секунду' || $temp[3] == 'секунды' || $temp[3] == 'секунд') $x = 1;
      elseif($temp[3] == 'минуту' || $temp[3] == 'минуты' || $temp[3] == 'минут') $x = 60;
      elseif($temp[3] == 'час' || $temp[3] == 'часа' || $temp[3] == 'часов') $x = 3600;
      elseif($temp[3] == 'день' || $temp[3] == 'дня' || $temp[3] == 'дней') $x = 86400;
      elseif($temp[3] == 'неделю' || $temp[3] == 'недели' || $temp[3] == 'недель') $x = 604800;
      elseif($temp[3] == 'месяц' || $temp[3] == 'месяца' || $temp[3] == 'месяцев') $x = 2592000;
      elseif($temp[3] == 'год' || $temp[3] == 'года' || $temp[3] == 'лет') $x = 31536000;
      else return strtotime($date);
      return $temp[1] == 'через ' ? time()+(($temp[2]?$temp[2]:1)*$x) : time()-(($temp[2]?$temp[2]:1)*$x);
    }
    elseif(preg_match('(^(([0-9]+) (января|февраля|марта|апреля|мая|июня|июля|августа|сентября|октября|ноября|декабря)( ([0-9]+) г.|)|сегодня|вчера|позавчера|завтра|послезавтра)( в ([0-9]+):([0-9]+)(:([0-9]+)|)|)$)',$date,$temp))
    {
      $months = array_flip($months);
      if($temp[1] == 'сегодня') return strtotime(date('Y-m-d')) + (@$temp[7]*3600) + (@$temp[8]*60) + (@$temp[10]);
      elseif($temp[1] == 'завтра') return strtotime(date('Y-m-d')) + (@$temp[7]*3600) + (@$temp[8]*60) + (@$temp[10]) + 86400;
      elseif($temp[1] == 'послезавтра') return strtotime(date('Y-m-d')) + (@$temp[7]*3600) + (@$temp[8]*60) + (@$temp[10]) + 172800;
      elseif($temp[1] == 'вчера') return strtotime(date('Y-m-d')) + (@$temp[7]*3600) + (@$temp[8]*60) + (@$temp[10]) - 86400;
      elseif($temp[1] == 'позавчера') return strtotime(date('Y-m-d')) + (@$temp[7]*3600) + (@$temp[8]*60) + (@$temp[10]) - 172800;
      elseif($temp[2] && array_key_exists($temp[3],$months)) return strtotime(($temp[5]?$temp[5]:date('Y')).'-'.$months[$temp['3']].'-'.$temp[2]) + (@$temp[7]*3600) + (@$temp[8]*60) + (@$temp[10]);
      else return strtotime($date);
    }
    else return strtotime($date);
  }
}
 
?>
Тестирую:
PHP
1
2
echo time(); echo "<br>";
echo convert_date(time());
Работает!
PHP
1
2
echo time(); echo "<br>";
echo convert_date(1310987173);
PHP
1
2
echo time(); echo "<br>";
echo convert_date('1310987173');
Не работает!!!


В чём причина??

P.S. Как Включить в Apache вывод ошибок?? error_reporting (E_ALL); не работает, что нужно изменить в httpd.conf? пожалуйста, конкретно, нужно отоброжение всех ошибок.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.07.2011, 15:08
Ответы с готовыми решениями:

Некорректно работает пользовательская функция
всем привет! есть переменная $status, которой присваивается значение из бд 1 либо 0. теперь функция - function status() { if...

Почему не работает пользовательская функция?
я разработал функцию. вот ее код BEGIN DECLARE siz varchar(255); DECLARE rez varchar(255); SELECT ties_lavto.Sessons...

Пользовательская функция работает не так, как ожидается: найти причины странного поведения функции
Ребята помогите, пожалуйста. Создаю функцию суммы дробных чисел, но она ничего не возвращает, экран пустой. Я знаю, что туплю, но все же. ...

2
36 / 36 / 9
Регистрация: 13.07.2011
Сообщений: 95
19.07.2011, 10:13
Включение вывода ошибок
PHP
1
2
3
4
<?php
ini_set('display_errors', on);
error_reporting(E_ALL);
?>
Цитата Сообщение от Sonax Посмотреть сообщение
В чём причина??
У меня приведенный код работает.
0
 Аватар для Sonax
350 / 76 / 10
Регистрация: 13.10.2010
Сообщений: 830
19.07.2011, 19:19  [ТС]
Тема закрыта, решение:

PHP изменил в файле php.ini и теперь получаю все ошибки.
Функция не может работать, потому как отсутсвует другая функция,

PHP
1
2
3
4
5
6
function lexica($n,$a,$b,$c,$m=1)
    {
    $n=sprintf("%.0f",$n);
    $x=abs($n>9?substr($n,-2):$n);
    return ($m?($m==2?number_format($n,0,' ',' '):$n).' ':'').(($x%=100)>9&&$x<20||($x%=10)>4||$x==0?$c:($x==1?$a:$b));
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.07.2011, 19:19
Помогаю со студенческими работами здесь

Пользовательская функция
Что такое пользовательская функция? И что делает numb? Заранее спасибо.

Пользовательская функция
Добрый день, уважаемые форумчане. Заранее извиняюсь за возможный повтор, но ничего подходящего не нашел. Необходимо написать функцию...

Пользовательская функция
Доброго времени суток не подскажете, почему функция возвращает &quot;Resource id #5&quot; вместо массива, код function file_to_mas($filepath) ...

Пользовательская функция
Доброго времени суток, столкнулся с трудностями при выполнении задания: Требуется разработать пользовательскую функцию для расчета...

Пользовательская функция
Дан радиус шара. Нужно рассчитать его площадь поверхности с помощью создания пользовательской функции (потом чтобы в библиотеке функции она...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru