2012-01-24 22 views
17

Tôi có một biểu mẫu có định dạng ngày là dd/mm/yyyy. Để tìm kiếm cơ sở dữ liệu, tôi đã sửa đổi định dạng ngày thành yyyy-mm-dd. Nhưng khi tôi echo, nó hiển thị 1970-01-01. Mã PHP bên dưới:Ngày PHP hiển thị '1970-01-01' sau khi chuyển đổi

$date1 = $_REQUEST['date'];  
echo date('Y-m-d', strtotime($date1)); 

Tại sao lại xảy ra? Làm thế nào tôi có thể định dạng nó thành yyyy-mm-dd?

+1

vì số 0000-00-00 trong db của bạn –

+0

không đến từ db, từ trang 'html của tôi' sang' php' – AssamGuy

+0

Đầu vào strtotime là sai. Kiểm tra $ date1. – Arung

Trả lời

49

Thay / với -:

$date1 = strtr($_REQUEST['date'], '/', '-'); 
echo date('Y-m-d', strtotime($date1)); 
+1

Cảm ơn Krister Andersson. – AssamGuy

+0

@Cyclone đơn giản và hiệu quả! – Neil

+1

Tôi đã có probem này khi coverting hai Vương quốc Anh ngày để định dạng MySQL. giúp đỡ của bạn được rất nhiều đánh giá cao. Làm việc như một giấc mơ! –

25

ngày 1 tháng 1 năm 1970 là cái gọi là Unix thời đại. Đó là ngày bắt đầu đếm số Unix time. Nếu bạn nhận được ngày này như là một giá trị trả về, nó thường có nghĩa là việc chuyển đổi ngày của bạn thành dấu thời gian Unix trả lại kết quả bằng không (gần). Vì vậy, việc chuyển đổi ngày không thành công. Rất có thể vì nó nhận được một đầu vào sai.

Nói cách khác, số strtotime($date1) trả về 0, có nghĩa là $date1 được chuyển ở định dạng không được hỗ trợ cho hàm strtotime.

+2

Cảm ơn mô tả tuyệt vời Oldskool – AssamGuy

-2

cuối cùng tôi đã tìm được một mã một dòng để giải quyết vấn đề này

date('d/m/Y', strtotime(str_replace('.', '-', $row['DMT_DATE_DOCUMENT']))); 
+2

Loại câu trả lời này là gì, bạn đã chọn mã từ mọi người khác và đặt nó trên một dòng? Bạn đã từng nghe về khả năng đọc mã chưa? – Cyclonecode

0

Sử dụng dưới mã cho php 5.3+:

$date = new DateTime('1900-02-15'); 
echo $date->format('Y-m-d'); 

Sử dụng dưới mã cho php 5.2:

$date = new DateTime('1900-02-15'); 
echo $date->format('Y-m-d'); 
+2

Tôi không thấy sự khác biệt giữa hai – Iceman

0
$date1 = $_REQUEST['date']; 

if($date1) { 
    $date1 = date('Y-m-d', strtotime($date1)); 
} else { 
    $date1 = ''; 
} 

Điều này sẽ hiển thị đúng khi có date() hợp lệ trong $date và không hiển thị gì nếu không.
Giải quyết vấn đề cho tôi.

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