Я использую PHP-скрипт для banlist, который выбирает дату и время, но у меня есть ошибка и я не знаю, как ее преобразовать в «нормальное» время.
Он перечисляет мне только дату: 01.01.1970 um 00:00 Uhr
Часть скрипта из этого:
//Convert Epoch Time to Standard format $datetime = date("dmY \\u\\m H:i \\U\\h\\r", $row['expires']); echo "<td>$datetime</td>";
Это запись из mysql db: http://img.ruphp.com/php/9ugjslm8.jpg
Не знаете, помогает ли это?
У кого-нибудь есть идея решить это?
ССЫЛКА: http://pastebin.com/r0dXg8FX
На основе этого изображения (которое вы дали в удаленном ответе) у вас есть миллисекунды. Разделите миллисекунды с 1000, чтобы получить секунды.
Возможно, что-то вроде этого:
$datetime = date('dmY \u\m H:i \U\h\r', $row['expires'] / 1000);
Но, если вы получите 1970 год, это означает, что вы на 32-битной машине, и ваш выбранный INT находится вне пределов досягаемости. В этом случае вы можете просто сократить последние 3 числа с помощью строковой функции substr()
:
$datetime = date('dmY \u\m H:i \U\h\r', substr($row['expires'], 0, -3));
Он перечисляет мне только дату: 01.01.1970 um 00:00 Uhr
Это просто означает, что вы неправильно думаете о $row['expires']
. Это не значение отметки времени UNIX и приводит к недействительной дате. Это означает, что значение по существу оценивается в 0, что является 1 января 1970 года в UNIX
date()
требует отправить действительную временную метку Unix (INT 11), это то, что у вас есть в базе данных для этого поля? или это поле даты времени?
Попробуй это
echo date("dmY \\u\\m H:i \\U\\h\\r", "2014-10-12"); //invalid echo date("dmY \\u\\m H:i \\U\\h\\r", time()); //valid: current unix timestamp
Сначала конвертируйте дату в метку UNIX. Попробуйте –
$datetime = date("dmY \\u\\m H:i \\U\\h\\r", strtotime($row['expires'])); echo "<td>$datetime</td>";