2009-08-28 56 views

Trả lời

41

Tôi nghĩ rằng những gì bạn thực sự muốn điều này là:

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

Đối số thứ hai của ngày là một dấu thời gian và tôi nghĩ rằng những gì đang xảy ra là PHP thấy chuỗi của bạn như một -1 timestamp ... do đó 12/31/1969.

Vì vậy, để có được một dấu thời gian từ phiên bản chuỗi ngày, bạn sử dụng strtotime

+1

Thay đổi chuỗi định dạng thành "m/d/Y" và tôi sẽ upvote. Anh ấy muốn có 4 chữ số. – MitMaro

+0

cảm ơn bạn! Nó đã làm việc! với php7 –

+0

Tuyệt vời. Công trinh. Dễ để thực hiện. – MarcoZen

1

Hai vấn đề:

1) Bạn cần vốn Y

2) Bạn cần một loại đúng ngày.

Hãy thử

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

Rất tiếc, strtotime là việc chuyển đổi quyền một dấu thời gian. date_create trả về một đối tượng DateTime.

2

Bạn cần một số vốn Y int chuỗi định dạng ngày. chữ thường y cho năm hai chữ số và chữ hoa 'Y' cho năm có bốn chữ số.

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

PHP Manual Page For date có thể có một số trợ giúp.

+1

bạn là chính xác để nhận tuy nhiên một năm 4 chữ số điều đó không giúp được vấn đề của tôi khi không hiển thị đúng ngày, hiển thị 12/31/1969 – JasonDavis

+0

Trả lời câu trả lời. 'strtotime' sẽ phân tích cú pháp thời gian từ MySql. – MitMaro

7

SQL:

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

PHP:

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

tôi được bảo hiểm này trong câu trả lời của tôi để h ttp://stackoverflow.com/questions/499014/i-need-to-change-the-date-format-using-php/499021#499021 - về cơ bản, date() hy vọng dấu thời gian Unix mà từ đó nó tính ngày/giờ và định dạng. Bạn đang đi qua một chuỗi xuất phát từ kết quả truy vấn MySQL, có thể bị xáo trộn bởi việc gõ vịt của PHP vào một thứ trông giống như một dấu thời gian của Unix, nhưng không có ý nghĩa gì cả.

Tôi giải thích một số cách tiếp cận để xử lý các cột ngày trong câu trả lời của tôi.

3

Cách tốt nhất là để chuyển đổi DateFormat trực tiếp trong chuỗi truy vấn của bạn:

$TimeFormat = "%m/%d/%Y"; // your pref. Format 

$sql = "SELECT DATE_FORMAT(DateCol , '" . $TimeFormat . "') as ConvertDate FROM tblTest"; 

Nếu không, bạn có thể sửa đổi chức năng này yêu cầu của bạn:

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)) : ""; 
} 
Các vấn đề liên quan