#php #date-format #strtotime
#php #формат даты #strtotime
Вопрос:
Я хочу отобразить $row->depositdate в формате dd-mm-yyyy.
Если столбец даты в базе данных равен нулю, отображается дата: 01-01-1970
echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>";
Если дата в базе данных имеет значение null, она не должна ничего отображать, в противном случае должна отображаться дата в формате dd-mm-yyyy.
Заранее спасибо
Sandeep
Комментарии:
1. Затем проверьте, равно ли значение null, и если это так, не ожидайте
date
, что функция выполнит вашу работу за вас — отобразите пустую строку, в противном случае отобразитеdate
вывод функции.
Ответ №1:
strtotime интерпретирует NULL как 0, поскольку ему требуется передать целочисленную временную метку. Временная метка 0 означает 1-1-1970.
Поэтому вам нужно будет проверить самостоятельно, если $row->depositdate === NULL
и если да, то вообще не вызывайте strtotime.
Ответ №2:
NULL
преобразуется в 0 — эпоха (1-1-1970)
Сделайте это вместо
echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>";
Ответ №3:
Вам нужно проверить, является ли значение $row->depositdata значением_null ранее, или проверить значение 0 после strtotime, если значение $row->depositdata неузнаваемо для strtotime.
echo "<td align=center>";
if (!is_null($row->depositdate))
{
$jUnixDate = strtotime($row->depositdate));
if ($jUnixDate > 0)
{
echo date('d-m-Y', $jUnixDate);
}
}
echo "</td>";
strtotime ожидает получить строку, содержащую английский формат даты, и попытается преобразовать этот формат в временную метку Unix (количество секунд с 1 января 1970 года 00:00:00 UTC) относительно временной метки, указанной в now, или текущего времени, если now не указано.
подробнее о проблеме unixtime и Y2K38: http://en.wikipedia.org/wiki/Year_2038_problem
Ответ №4:
I am able to insert value into DB (SQL Server -- Microsoft) with PHP and value stored is: 2021-03-25 22:45:00
When I trying to fetch the value from DB:
$db = trim($row_table['db_timestamp']);
$timestamp = strtotime('m-d-y',$db);
echo date("m-d-Y H:i:s", $timestamp);
output is : 01-01-1970 05:30:00
Ответ №5:
О! Я знаю, почему это происходит? Просто вы не включили «depositdate» в свой запрос SELECT. Сначала измените SQL-запрос, чтобы выбрать все со знаком подстановки, как показано здесь
$sql = "SELECT * FROM `yourtable`";
Комментарии:
1. Откуда вы знаете, что я не включил «depositdate» в запрос ВЫБОРА? Пожалуйста, внимательно прочитайте вопрос …..