如何将unix时间戳转换为mysql日期格式

时间:2012-09-23 06:51:27

标签: php unix-timestamp

我正在编写代码来减去两个日期。这是一个合同类型的东西,用户可以看到他的合同完成剩余的天数。像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 个答案:

答案 0 :(得分:3)

您可以使用这两个功能将日期相互转换,

将此用于MySQL日期时间的时间戳:

$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函数:

您也可以使用TIMESTAMPDIFFUNIX_TIMESTAMP函数在MySQL中使用时间戳...

答案 1 :(得分:0)

您可以使用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分钟

(这将根据您运行代码的时间而改变。)

$diffDateInterval的实例。

DateTime :: createFromFormat()可接受的日期格式可在此处找到http://www.php.net/manual/en/function.date.php