我想将一个MySQL DATETIME转换成这种格式的m/d/y,但下面的代码不工作,返回12/31/1969,而不是有人可以告诉我如何做到这一点?如何将PHP中的mysql datetime转换为m/d/y格式?
$fromMYSQL = '2007-10-17 21:46:59'; //this is the result from mysql DATETIME field
echo date("m/d/Y", $fromMYSQL);
我想将一个MySQL DATETIME转换成这种格式的m/d/y,但下面的代码不工作,返回12/31/1969,而不是有人可以告诉我如何做到这一点?如何将PHP中的mysql datetime转换为m/d/y格式?
$fromMYSQL = '2007-10-17 21:46:59'; //this is the result from mysql DATETIME field
echo date("m/d/Y", $fromMYSQL);
我想你真正想要的是这样的:
$fromMYSQL = '2007-10-17 21:46:59';
echo date("m/d/Y", strtotime($fromMYSQL));
日期的第二个参数是时间戳记,我认为正在发生的事情是PHP可以看到您的字符串作为-1时间戳...因此12/1969分之31。
因此,要获得之日起的字符串版本时间戳,您使用strtotime
两个问题:
1)你需要一个资本Ÿ
2)你需要一个正确的日期类型。
尝试
$fromMYSQL = date_create ('2007-10-17 21:46:59');
echo date("m/d/Y", $fromMYSQL);
哎呀,是的strtotime权转换为时间戳。 date_create返回一个DateTime对象。
您需要一个大写字母Y
int日期格式字符串。小写字母y
给出两位数年份,大写字母'Y'给出四位数字年份。
$fromMYSQL = '2007-10-17 21:46:59';
echo date("m/d/Y", strtotime($fromMYSQL));
PHP Manual Page For date可能有些帮助。
你是获得然而一个4位数的年份正确这对我没有显示正确日期的问题没有帮助,显示12/31/1969 – JasonDavis 2009-08-28 03:06:11
答案更新。 'strtotime'应该解析MySql中的时间。 – MitMaro 2009-08-28 03:10:41
SQL:
SELECT whatever, UNIX_TIMESTAMP(date) date FROM table WHERE whatever
PHP:
date('m/d/Y', $result['date']);
我介绍这在我的答案h ttp://stackoverflow.com/questions/499014/i-need-to-change-the-date-format-using-php/499021#499021 - 基本上,date()
需要一个Unix时间戳,从中计算日期/时间和格式。你传递的是一个来自MySQL查询结果的字符串,这个字符串很可能被PHP的鸭子打字变成看起来像Unix时间戳的东西,但没有任何意义。
我解释了几种处理答案中日期列的方法。
,最好的办法是将日期格式直接转换成你的查询字符串:
$TimeFormat = "%m/%d/%Y"; // your pref. Format
$sql = "SELECT DATE_FORMAT(DateCol , '" . $TimeFormat . "') as ConvertDate FROM tblTest";
否则,您可以修改此功能,以您的需求:
function format_date($original, $format) {
if (empty($original)) {
$original = date("Y-m-d H:i:s");
}
$original = ereg_replace("30 Dez 1899", "30-01-1973", $original);
$format = ($format=='date' ? "%m-%d-%Y" : $format);
$format = ($format=='germandate' ? "%d.%m.%y" : $format);
$format = ($format=='germandaydate' ? "%A, %d.%m.%Y" : $format);
$format = ($format=='germantime' ? "%H:%M" : $format);
$format = ($format=='germandatetime' ? "%d.%m.%y %H:%M:%S" : $format);
$format = ($format=='datetime' ? "%m-%d-%Y %H:%M:%S" : $format);
$format = ($format=='mysql-date' ? "%Y-%m-%d" : $format);
$format = ($format=='mysql-datetime' ? "%Y-%m-%d %H:%M:%S" : $format);
$format = ($format=='mssql-date' ? "%Y%m%d" : $format);
$format = ($format=='mssql-datetime' ? "%Y%m%d %H:%M:%S" : $format);
$format = ($format=='Ymd' ? "%Y-%m-%d" : $format);
return !empty($original) ? strftime($format, strtotime($original)) : "";
}
将格式字符串更改为“m/d/Y”,我将upvote。他想要四位数年份。 – MitMaro 2009-08-28 03:13:12
谢谢!有效!用php7 – 2017-03-14 07:06:10
太好了。作品。易于实施。 – MarcoZen 2018-01-05 20:00:05