Просмотр поста

.
ДоХтор

Ссылаясь на первые два поста (чтобы понятней было, о чём речь)
- 1 -
- 2 -
[продолжая тему про functions::display_date()] должен признаться, что такая запись

date_default_timezone_set('Europe/Kiev');
echo date("Время H:i:s <br/> Дата d.m.Y", time() + $set_user['timeshift'] * 3600);
мне не подошла, потому что она меняет время по умолчанию (т.е. если $set_user['timeshift'] равна 0, то у меня сдвиг +2 часа). Ну а так, как я не нашёл вывод системного времени в движке, то всё-таки написал быдлокод:
решение (+/-)
// Для получения даты и времени переводим часы на сутки вперёд
// (если не перевести, получим строку вида "Сегодня 20:30")
$dtTm = functions::display_date(time() + $set_user['timeshift'] + 86400);
// Получаем из строки "03.12.2015 / 20:30" текущее время "20:30"
preg_match('/[0-9]{2}:[0-9]{2}/', $dtTm, $tm);
// Получаем из строки "03.12.2015 / 20:30" текущую дату "03.12.2015"
preg_match('/[0-9]{2}\.[0-9]{2}\.[0-9]{4}/', $dtTm, $dt);
// Отделяем в строке "20:30" часы и минуты
list($H, $i) = explode(':', implode($tm));
// Отделяем в строке "03.12.2015" день, месяц и год
list($d, $m, $Y) = explode('.', implode($dt));
// Получаем заданную метку времени, уменьшаем её на сутки и выводим дату
echo date('d.m.Y', (mktime($H, $i, date('s'), $m, $d, $Y) - 86400));
// Получаем заданную метку времени, уменьшаем её на сутки и выводим время
echo date('H:i:s', (mktime($H, $i, date('s'), $m, $d, $Y) - 86400));

Есть вариант по-красивее, предложенный reaper'ом:
решение (+/-)
$d = strptime('03.12.2015 / 20:30', '%d.%m.%Y / %H:%M');
print_r($d);
/*
array(9) {
  ["tm_sec"]=>
  int(0)
  ["tm_min"]=>
  int(30)
  ["tm_hour"]=>
  int(20)
  ["tm_mday"]=>
  int(3)
  ["tm_mon"]=>
  int(11)
  ["tm_year"]=>
  int(115)
  ["tm_wday"]=>
  int(4)
  ["tm_yday"]=>
  int(336)
  ["unparsed"]=>
  string(0) ""
}
*/

Но этот вариант для Windows-платформ не реализован