2012-08-01 51 views
5

Tôi có hai trường văn bản, một cho ngày theo định dạng 08/01/2012 và trường thứ hai chứa thời gian. Tôi hiện đang có trường thời gian ở định dạng 09:41 nhưng tôi có một số linh hoạt với định dạng của nó (ví dụ: nếu 24 giờ là dễ dàng hơn).PHP Ngày và giờ chuyển đổi chuỗi thành Ngày giờ MySQL

Tôi đã lên kế hoạch chỉ ghép các chuỗi và sau đó chuyển đổi. Tôi có nên chuyển đổi ngày thành 2012-08-01 trước không?

Tôi làm cách nào để chuyển đổi thành ngày giờ (2012-08-01 09:41:00)? Làm thế nào để chuyển đổi trở lại của nó thành một định dạng 08/01/2012 và 09:41?

+0

Xem ['strtotime'] (php.net/manual/en/function.strtotime.php) và [' date'] (php.net/manual/en/function.date.php). Concat, 'strtotime', sau đó' date' vào bất cứ định dạng nào bạn muốn. – Palladium

+0

Vì vậy, hiện tại bạn đang lưu trữ ngày và thời gian dưới dạng chuỗi đơn giản…? – knittl

+0

không, tôi đang lưu trữ dưới dạng datetime, nhưng tôi cần hiển thị ngày và giờ trong các trường riêng biệt trên một trang. Ngày phải ở định dạng nhất định để làm việc với một jQuery datepicker. – Motive

Trả lời

6
SELECT STR_TO_DATE(concat('08/01/2012', '09:41am'),'%d/%m/%Y%h:%i'); 
+0

Hoàn hảo, và 'CHỌN DATE_FORMAT ('2012-01-08 09:41:00', '% r')' để chuyển đổi lại có vẻ hoạt động. cảm ơn! – Motive

2

Về phía cơ sở dữ liệu, bạn có thể sử dụng:

STR_TO_DATE() sử dụng specifiers trong this table để chuyển đổi sang một định dạng thân thiện với cơ sở dữ liệu. Reference

DATE_FORMAT() sau đó sẽ trả về bất kỳ phần nào bạn muốn trong thời gian cơ sở dữ liệu đó. Reference

Về phía PHP bạn có thể sử dụng:

  • strtotime() - Phân tích về bất kỳ tiếng Anh mô tả datetime văn bản thành một dấu thời gian Unix
  • date - Định dạng một ngày/giờ địa phương

strotime sẽ tạo ra một dấu thời gian Unix dựa trên bất kỳ ngày/thời gian chuỗi nào được truyền cho nó. Nếu bạn vượt qua cả hai lĩnh vực của bạn (08/01/2012 & 09:41 am) nó sẽ tạo ra một dấu thời gian dựa trên nó. Để đảo ngược quá trình, bạn sử dụng date("m/d/Y H:ia").

$field1 = '08/01/2012'; 
$field2 = '09:41am'; 

$stamp = strtotime($field1 . ' ' . $field2); 

echo date("m/d/Y H:ia", $stamp); 

Tôi chưa thử nghiệm điều này, nhưng nó sẽ hoạt động.

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