Как конвертировать unixtimestamp в формат даты MySQL

Я пишу код для вычитания двух дат. Это для типа контракта, где пользователь видит количество дней, оставшихся до завершения контракта. Что-то вроде start_date_time="today" а также end_date_time=y где значение y извлекается из базы данных (тип DATETIME). Это в формате даты и времени mysql (yyyy-mm-dd HH:mm:ss).

<?php
include_once '../include/connections.php';
$id =$_REQUEST['uid'];
$result= mysql_query("SELECT * FROM data WHERE uid  = '$id'");
$test = mysql_fetch_array($result);
echo $test[14];
echo "<br /><br />";
$today=time();
$enddate=strtotime('$test[14]');
$timediff = $enddate - $today;
$days=intval($timediff/86400);
$remaining=$timediff%86400;
$hours=intval($remaining/3600);
$remaining=$remaining%3600;
$mins=intval($remaining/60);
$secs=$remaining%60;
echo "<br>".$days.' days '.$hours.' hours '.$mins.' minutes and '.$secs.' seconds.';
?>

Когда я echo $test[14];Я получаю дату и время, хранящиеся в базе данных, которая является (2012-09-26 00:00:00)

Когда я echo $today; тогда я получаю это в этом формате 1348381896, Теперь, как мне преобразовать этот формат в формат, полученный из БД, чтобы я мог вычесть 2 даты и получить количество дней и оставшегося времени?

2 ответа

Вы можете использовать эти 2 функции для преобразования дат друг в друга,

Используйте это для метки времени в MySQL datetime:

$timestamp = '1348381896';
$date = date('Y-m-d H:i:s', $timestamp);
echo $date;

Используйте это для даты и времени в MySQL:

$date = '2012-09-26 00:00:00';
$timestamp = strtotime($date);
echo $timestamp;

Также, если вы хотите вычесть даты в сторону MySQL, вы можете использовать функции DATEDIFF и / или TIMEDIFF:

Также вы можете работать с метками времени в MySQL, используя функции TIMESTAMPDIFF и UNIX_TIMESTAMP...

Вы можете использовать PHP-классы DateTime для этого:

$today = new DateTime();

$mysqlDate = "2012-12-15 13:40:20"; //for example
// To match your code this would be $mysqlDate = $test[14];
$mysqlFormat = 'Y-m-d H:i:s';

$endDate = DateTime::createFromFormat($mysqlFormat, $mysqlDate);
$diff = $today->diff($endDate);
echo "You have {$diff->d} days, {$diff->h} hours and {$diff->m} minutes left";

Это даст следующий вывод:

У вас осталось 22 дня, 6 часов и 5 минут

(Это изменится в зависимости от того, когда вы запустите код).

$diff является экземпляром DateInterval.

форматы дат, приемлемые для DateTime::createFromFormat(), можно найти здесь http://www.php.net/manual/en/function.date.php

Другие вопросы по тегам