2009-08-28 75 views
11

我想将一个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); 

回答

41

我想你真正想要的是这样的:

$fromMYSQL = '2007-10-17 21:46:59'; 
echo date("m/d/Y", strtotime($fromMYSQL)); 

日期的第二个参数是时间戳记,我认为正在发生的事情是PHP可以看到您的字符串作为-1时间戳...因此12/1969分之31。

因此,要获得之日起的字符串版本时间戳,您使用strtotime

+1

将格式字符串更改为“m/d/Y”,我将upvote。他想要四位数年份。 – MitMaro 2009-08-28 03:13:12

+0

谢谢!有效!用php7 – 2017-03-14 07:06:10

+0

太好了。作品。易于实施。 – MarcoZen 2018-01-05 20:00:05

1

两个问题:

1)你需要一个资本Ÿ

2)你需要一个正确的日期类型。

尝试

$fromMYSQL = date_create ('2007-10-17 21:46:59');  
echo date("m/d/Y", $fromMYSQL); 

哎呀,是的strtotime权转换为时间戳。 date_create返回一个DateTime对象。

2

您需要一个大写字母Y int日期格式字符串。小写字母y给出两位数年份,大写字母'Y'给出四位数字年份。

$fromMYSQL = '2007-10-17 21:46:59'; 
echo date("m/d/Y", strtotime($fromMYSQL)); 

PHP Manual Page For date可能有些帮助。

+1

你是获得然而一个4位数的年份正确这对我没有显示正确日期的问题没有帮助,显示12/31/1969 – JasonDavis 2009-08-28 03:06:11

+0

答案更新。 'strtotime'应该解析MySql中的时间。 – MitMaro 2009-08-28 03:10:41

7

SQL:

SELECT whatever, UNIX_TIMESTAMP(date) date FROM table WHERE whatever 

PHP:

date('m/d/Y', $result['date']); 
3

,最好的办法是将日期格式直接转换成你的查询字符串:

$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)) : ""; 
} 
相关问题