2013-03-06 39 views
0

基本上我有日期的用戶選擇,該格式如下:轉換數據庫日期格式以YYYY-MM-DD和回DD-MM-YYYY在PHP

01-12-2013 (dd-mm-yyyy) 

我需要格式化它變成了DB作爲它的一個日期類型這樣的YYYY-MM-DD格式:

2013-12-01 

我存儲我的日期變量,讓叫它$date

我已經使用createFromFormat函數試圖LIK E本:

$processdate = DateTime::createFromFormat('dd-mm-yy', $date); 
echo $processdate->format('yy-mm-dd'); 

但我得到一個錯誤說:

Fatal error: Call to a member function format() on a non-object 

能怎麼我沒有正確地使用它,請有人告訴我?

+1

你可以參考這個鏈接 http://stackoverflow.com/questions/2487921/convert-date-format-yyyy-mm-dd-dd-mm-yyyy – ajay 2013-03-06 13:32:15

回答

2

createFromFormat被記錄爲在失敗時返回false,這正是這裏發生的情況。當您嘗試致電 時,該程序會爆炸,這沒有任何意義。

原因是你的格式字符串是錯誤的。對於給定的輸入,正確的格式字符串是"d-m-Y"(格式字符串也記錄在同一頁上)。

當然這意味着你的輸出格式字符串也是錯誤的:它應該是"Y-m-d"

+0

真棒謝謝:) – Bohdi 2013-03-06 13:40:58

0

這是我使用的轉換和從SQL具體日期

function human_date_to_sql($date) { 
    if($date == '') return ''; 

    if(stristr($date, "-")) return $date; 

    $date_parts = explode('/', $date); 
    $sql_date = $date_parts[2] . "-" . $date_parts[1] . "-" . $date_parts[0]; 

    return $sql_date; 
} 

function sql_date_to_human($date) { 
    if($date == '') return ''; 

    if(stristr($date, "/")) return $date; 

    $date_parts = explode('-', $date); 
    $human_date = $date_parts[2] . "/" . $date_parts[1] . "/" . $date_parts[0]; 

    return $human_date; 
} 
+1

真的嗎?這是一個相對天真的方法。爲什麼不使用內置日期庫?如果您想要爲人力輸出格式化日期,該怎麼辦?這些函數已經存在於PHP中 - 爲什麼要重寫它們 – 2013-03-06 13:33:17

+0

它們也存在於MySQL中。 – 2013-03-06 13:33:54

+0

@ColinMorelli最初需要做很多其他的事情,然後最終歸結爲這兩個功能。雖然不知道'STR_TO_DATE',但將來會檢查出 – bizzehdee 2013-03-06 13:36:12

1

MySQL能爲你做的與STR_TO_DATE功能:

SELECT STR_TO_DATE('01-05-2013','%d-%m-%Y'); 
0

試試這個:

function dateInsert($Date, $In = '-', $Out = '-') 
     { 
      if ($Date) 
       return implode($Out, array_reverse(explode($In, $Date))); 
      else { 
       return false; 
      } 
     } 
$date = '01-12-2013'; 
echo dateInsert($date); 

您可以使用此功能更改日期。 希望這會有所幫助。

相關問題