2012-05-13 47 views
155

ok, tôi đã nghiên cứu rất nhiều trang về cách tôi có thể chuyển đổi đối tượng DateTime của PHP thành String. Tôi luôn thấy "Chuỗi thành Ngày giờ" và không phải "Ngày giờ thành chuỗi"Chuyển đổi DateTime thành chuỗi PHP

Thời gian chờ PHP có thể được lặp lại, nhưng tôi muốn xử lý các hàm chuỗi DateTime của mình bằng PHP.

Bây giờ câu hỏi của tôi là làm thế nào tôi có thể làm cho PHP dateTime Object để một chuỗi bắt đầu từ loại mã

<?php 
$dts = new DateTime(); //this returns the current date time 
echo strlen($dts); 
?> 
+1

Tại sao bạn muốn xử lý DateTime bằng các hàm chuỗi? Bạn đang cố gắng để thực hiện? – mgiuffrida

+1

một số loại trình xác thực ngày giờ? trong php –

+2

[RTFM] (http://php.net/manual/en/class.datetime.php) – NDM

Trả lời

283

Bạn có thể sử dụng phương pháp format của lớp DateTime:

$date = new DateTime('2000-01-01'); 
$result = $date->format('Y-m-d H:i:s'); 

Nếu format không thành công vì một số lý do, nó sẽ trả về FALSE. Trong một số ứng dụng, nó có thể làm cho tinh thần để xử lý các trường hợp thất bại:

if ($result) { 
    echo $result; 
} else { // format failed 
    echo "Unknown Time"; 
} 
+2

+1 Nó hoạt động. Bạn có thể xin vui lòng cũng cho biết làm thế nào để kiểm tra null (trong cùng một dòng) trước khi thực hiện chuyển đổi này. Cảm ơn! – Watt

+1

Hey @Watt, điểm tốt! Tôi đã mở rộng ví dụ để cho biết cách xử lý trường hợp lỗi. – rjz

+1

bạn quên múi giờ, thay vì sử dụng định dạng '$ date-> ('c')' hoặc '$ date-> ('Ymd H: i: s Z')' hoặc '$ date-> format ('Ymd H: i: s T ') ' –

13

Cách đơn giản nhất tôi thấy là:

<?php 
$date=new DateTime(); //this returns the current date time 
$result = $date->format('Y-m-d-H-i-s'); 
echo $result; 
echo "<br>"; 
$krr = explode('-',$result); 
echo "<br>"; 
$result = implode("",$krr); 
echo $result; 
?> 

Tôi hy vọng nó giúp.

0

của nó làm việc cho tôi

$start_time = date_create_from_format('Y-m-d H:i:s', $start_time); 
    $current_date = new DateTime(); 
    $diff = $start_time->diff($current_date); 
    $aa= (string)$diff->format('%R%a'); 
    echo gettype($aa); 
8
echo date_format($date,"Y/m/d H:i:s"); 
10

Có một số định dạng được xác định trước trong date_d.php để sử dụng với format như:

define ('DATE_ATOM', "Y-m-d\TH:i:sP"); 
define ('DATE_COOKIE', "l, d-M-y H:i:s T"); 
define ('DATE_ISO8601', "Y-m-d\TH:i:sO"); 
define ('DATE_RFC822', "D, d M y H:i:s O"); 
define ('DATE_RFC850', "l, d-M-y H:i:s T"); 
define ('DATE_RFC1036', "D, d M y H:i:s O"); 
define ('DATE_RFC1123', "D, d M Y H:i:s O"); 
define ('DATE_RFC2822', "D, d M Y H:i:s O"); 
define ('DATE_RFC3339', "Y-m-d\TH:i:sP"); 
define ('DATE_RSS', "D, d M Y H:i:s O"); 
define ('DATE_W3C', "Y-m-d\TH:i:sP"); 

Sử dụng như thế này:

$date = new \DateTime(); 
$string = $date->format(DATE_RFC2822); 
+2

Bạn có thể sử dụng hằng số DateTime (ví dụ DateTime :: ISO8601), nó làm cho mã dễ đọc hơn. –

0

Cách ngắn hơn khi sử dụng danh sách. Và bạn có thể làm những gì bạn muốn với mỗi thành phần ngày.

list($day,$month,$year,$hour,$min,$sec) = explode("/",date('d/m/Y/h/i/s')); 
echo $month.'/'.$day.'/'.$year.' '.$hour.':'.$min.':'.$sec; 
Các vấn đề liên quan