2011-10-12 24 views
9

Tôi muốn hiển thị $ row-> depositdate ở định dạng dd-mm-yyyy.PHP strtotime trả về ngày 1970 khi cột ngày là null

Nếu cột ngày trong cơ sở dữ liệu là null ngày hiển thị là: 01-01-1970

echo "<td align=center>".date('d-m-Y', strtotime($row->depositdate))."</td>"; 

Nếu ngày là null trong cơ sở dữ liệu nó sẽ hiển thị gì cả, nếu không thì ngày trong dd-mm định dạng -yyyy sẽ được hiển thị.

Cảm ơn trước

Sandeep

+0

Sau đó kiểm tra nếu giá trị là null và nếu nó là, tôi không mong đợi 'date' chức năng để làm công việc cho bạn - màn hình chuỗi rỗng, nếu không hiển thị đầu ra của hàm 'date'. –

Trả lời

16

NULL được hiểu như là 0 bởi strtotime, vì nó muốn được thông qua một timestamp số nguyên. Dấu thời gian của 0 có nghĩa là 1-1-1970.

Vì vậy, bạn sẽ phải tự mình kiểm tra nếu $row->depositdate === NULL và nếu vậy, đừng gọi strtotime.

+0

cảm ơn GolezTrol .... – Sandy505

6

NULL được chuyển thành 0 - thời đại (1-1-1970)

Làm điều này thay vì

echo "<td align=center>".($row->depositdate ? date('d-m-Y', strtotime($row->depositdate)) : '')."</td>"; 
+0

Điều đó thật hoàn hảo! –

0

Bạn cần phải kiểm tra nếu $ row-> depositdata is_null trước hoặc kiểm tra 0 sau strtotime nếu giá trị của $ row-> depositdata không thể nhận ra cho strtotime.

echo "<td align=center>"; 
    if (!is_null($row->depositdate)) 
    { 
    $jUnixDate = strtotime($row->depositdate)); 
    if ($jUnixDate > 0) 
    { 
      echo date('d-m-Y', $jUnixDate); 
    } 
    } 
    echo "</td>"; 

strtotime hy vọng sẽ nhận được một chuỗi chứa một định dạng ngày tháng tiếng Anh và sẽ cố gắng để phân tích định dạng đó vào một Unix timestamp (số giây kể từ ngày 1 tháng 1 năm 1970 00:00:00 UTC), liên quan đến các dấu thời gian đưa ra ngay bây giờ, hoặc thời gian hiện tại nếu bây giờ không được cung cấp.

thêm về unixtime và vấn đề Y2K38: http://en.wikipedia.org/wiki/Year_2038_problem

-1

Oh! Tôi biết tại sao điều này xảy ra? Chỉ đơn giản là bạn chưa bao gồm "depositdate" trong truy vấn SELECT của bạn. Thứ nhất Thay đổi SQL truy vấn để chọn tất cả với dấu thẻ hoang dã như đây

$sql = "SELECT * FROM `yourtable`"; 
+0

Làm cách nào để bạn biết tôi chưa bao gồm "depositdate" trong truy vấn SELECT? Vui lòng đọc kỹ câu hỏi ..... – Sandy505

Các vấn đề liên quan