2012-08-02 174 views
0

如何轉換日期從yyyy:mm:ddyyyy-m-ddyyyy:mm:dd(不含前導零)到yyyy-m-dd(前導零到月份)?PHP轉換日期格式(不含SQL)

+0

可以爆炸的字符串:有 - – 2012-08-02 06:21:34

+0

好,我用它有點陌生。 分割日期後,如何連接它? 謝謝。 ^^ – user1545296 2012-08-02 06:23:53

+0

implode函數,但我認爲有更好的答案delow和更簡單的方法來做到這一點 – 2012-08-02 06:25:35

回答

2

試試這個:

$dateFrom ="2012:8:2"; 
$dateTo = str_replace(":","-",$dateFrom); 
$dateTo = date("Y-m-d", strtotime($dateTo)); 
echo $dateTo; 
+0

謝謝。它的工作。 ^^ – user1545296 2012-08-02 06:43:52

+0

歡迎!沒問題! :) – sephoy08 2012-08-02 07:00:43

2

使用$date=strtotime($date)函數獲取日期unix時間戳。之後,你可以使用date("Y-m-d",$date)功能,將其轉換爲您want.Here是一個例子格式:

$date=strtotime($olddate); 
$date=date("Y-m-d",$date); 
echo $date; // Now this will show you the date in the format you wanted :) 
+0

'strtotime'不會識別'yyyy:mm:dd'的格式,'strtotime('2012:08: 02')'會返回'false'。 – xdazz 2012-08-02 06:29:43

+0

$ olddate = 2012:07:08在strtotim // echo $ date:no output 之後 我不知道,爲什麼它發生了? ^^,對不起,我是新手 – user1545296 2012-08-02 06:31:53

+0

@ user1545296正如我所說的,'strtotime'不會識別'yyyy:mm:dd'的格式,它將返回false而不是unix時間戳。 – xdazz 2012-08-02 06:33:38

0

使用日期()函數

echo date('Y-m-d'); // for 1st case (replacing ':' with '-') 
echo date('Y-j-d'); // for 2nd case (without leading zero) 
4

你可以使用DateTime::createFromFormat,然後使用DateTime::format

例子:

$date = DateTime::createFromFormat('Y:m:d', '2012:08:02'); 
echo $date->format('Y-m-d'); 

// without leading zero for month 
$date = DateTime::createFromFormat('Y:n:d', '2012:8:02'); 
echo $date->format('Y-m-d'); 
+0

我試圖用變量改變'2012:08:02',但失敗了。 有什麼想法? ^^ – user1545296 2012-08-02 06:37:22

+0

@ user1545296那麼你的變量的價值是什麼? – xdazz 2012-08-02 06:38:40

+0

我認爲它是'2012:08:02' ... – 2012-08-02 06:39:28

1

使用date功能。

date不會明白:作爲分隔符,所以你將需要更換的隔膜,它明白,像/-,與str_replace

代碼:

$orig_date = '2012:8:2'; 
$final_date = date('Y-n-d', str_replace(':', '/', $orig_date)); 
echo $final_date; // Result: 2012-8-02