Проблема форматирования даты с PHP на MySQL - PullRequest
1 голос
/ 08 марта 2012

У меня проблема с форматированием даты в PHP / MySQL. Здесь я создаю переменные даты:

$checkDate = date("d/m/y H:i", time());
$datestrto = strtotime($checkDate); 

Затем я вставляю его в таблицу mysql со столбцом Datatype of bigint.

Когда я потом, когда мне нужно отобразить дату, я использую этот код:

echo '<td>'.date("d/m/y H:i",$row['f_uploaded_date']).'</td>';

Но вместо отображения даты в формате D/M/Y H:i, она повторяет дату в формате m/d/y H:i. Может кто-нибудь объяснить, почему это происходит, и как это исправить?

Заранее спасибо, Адам

Ответы [ 4 ]

1 голос
/ 08 марта 2012

Во-первых,

$checkDate = date("d/m/y H:i", time());
$datestrto = strtotime($checkDate); 

- довольно забавный способ присвоения результата time() функции переменной $datestrto.

Далее вам также не нужна эта переменная, поскольку вы можете просто использовать unix_timestamp() функцию mysql в запросе вставки.

Теперь к вашему вопросу.1013 * вместо повторения даты в формате D / M / YH: i, это повторяет дату в формате m / d / y H: i.

перепроверьте ваш синтаксис.где-то есть опечатка

1 голос
/ 08 марта 2012

Когда вы вставляете его в таблицу MySQL, делайте это так:

INSERT INTO yourtable(something,somedate) VALUES('something',str_to_date('".$checkDate."','%d/%m/%y %H:%i'))

и когда вы извлекаете его из MySQL, делайте так:

SELECT *,date_format(somedate,'%D/%M/%Y %H:%i') as formateddate from yourtable

тогда в php вы используете:

$row['formateddate']

Надеюсь, это поможет вам:)

EDIT: Полный код:

$ddate = date("d/m/y H:i", time()); 
$sql = "INSERT INTO files (rowID, file, mimetype, data, uploaded_by, uploaded_date, size, times_downloaded, description) VALUES (NULL, '$fileName', '$fileType', '$content', '$user', str_to_date('".$ddate."','%d/%m/%y %H:%i'), $fileSize, 0, '$description')";
1 голос
/ 08 марта 2012

Таким образом, вы конвертируете метку времени unix в форматированную строку даты, затем конвертируете форматированную строку времени обратно в метку unix и вставляете ее в свою базу данных. Не проще ли просто вставить метку времени Unix, которую вы получили? Или даже не возиться с PHP-кодом и

INSERT INTO sometable (id, f_uploaded_date) 
VALUES ($id, UNIX_TIMESTAMP(NOW()))

Я подозреваю, что явная проблема, которую вы описываете, связана с тем, что strtotime ожидает, что строки даты в формате 99/99/9999 будут в американском стиле мм / дд / гггг, а не дд / мм / гггг, как используется в Великобритании .

0 голосов
/ 08 марта 2012

Вы можете извлечь формат даты из вашей базы данных mysql, а затем при преобразовании в переменную php вы можете использовать:

$num=mysql_numrows($result);

$i=0;
while ($i <= $num) {
$date=mysql_result($result,$i,"Date");
$date = date('d-m-Y', strtotime($date));
echo $date."<br>";
}

Где $ result - это ваш запрос MySQL, а "Date" - это имяколонка.Однако я не уверен в использовании этого метода со временем.

- РЕДАКТИРОВАТЬ -

ссылка: http://php.net/manual/en/function.date.php

...