2010-09-01 28 views

Trả lời

3

Bạn có thể làm:

$input = 'dd-mm-yy'; 
$a = explode('-',$input); 
$result = $a[1].'-'.$a[0].'-'.$a[2];          
+0

$ old_date = date ($ date); $ old_date_timestamp = strtotime ($ old_date); $ new_date = date ('d-m-Y', $ old_date_timestamp); –

8

này sẽ không làm việc:

date('m-d-y', strtotime($the_original_date)); 

Nếu bạn có PHP 5.3, bạn có thể làm:

$date = DateTime::createFromFormat('d-m-y', '09-10-01'); 
$new_date = $date->format('m-d-Y'); 

Nếu không:

$parts = explode('-', $original_date); 
$new_date = $parts[1] . '-' . $parts[0] . '-' . $parts[2]; 
+2

Điều này sẽ không thành công trong một số trường hợp vì strtotime nhận ra ngày tiếng Anh của Hoa Kỳ. 03-01-10 sẽ được hiểu là ngày 1 tháng 3 năm 2010 không phải là ngày 3 tháng 1 năm 2010. – stillstanding

+0

đây là mã của tôi Testadmin

+0

Câu trả lời được cập nhật vì nó hoàn toàn sai. Thanks @stillstanding. – jasonbar

0

Nếu định dạng luôn như trên , Điều này sẽ làm việc:

$pieces = explode("-", $yourTimestring); 
$timestamp = mktime(0,0,0,$pieces[1], $pieces[0], $pieces[2]); 
$newDateStr = date("m-d-y", $timestamp); 

Edit: Đúng vậy, chỉ thấy câu trả lời từ "codaddict" và yeah, nếu tôi alredy tách nó ra bạn cũng có thể nối trực tiếp ^^

0

Bạn có thể sử dụng các sscanf chức năng nếu bạn không có PHP 5.3 có sẵn và tận dụng các lập luận trao đổi tùy chọn:

$theDate = '01-02-03'; 
print join(sscanf($theDate, '%2$2s-%1$2s-%3$2s'), '-'); 
# output: 02-01-03 

sscanf cơ bản phân tích các chuỗi cung cấp trong một mảng dựa trên quy định mat, hoán đổi đối số phù hợp đầu tiên (ngày) với số thứ hai (tháng), để nguyên thứ ba (năm) bị ảnh hưởng và sau đó mảng này được nối lại với - làm dấu tách.

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