Ссылаясь на первые два поста (чтобы понятней было, о чём речь)
- 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-платформ не реализован