2013-04-27 149 views
1

我得到一個日期格式,如Mon Apr 22 2013 12:16:00 GMT+0530(印度標準時間),形成一個javascript到我的php函數。在PHP中轉換日期格式

我想以「2013-04-22 12:16:00」格式將它存儲到我的數據庫表中。

任何人都可以幫助我轉換這種日期類型。

我想:

date("Y-m-d H:i:s",$startDate); 

但它給錯誤的

日期()預計參數2是()給出

+0

我使用MySQL的database.And該字段的數據類型是\t日期時間 – 2013-04-27 19:54:19

回答

5

使用的strtotime長字符串和日期() :

$originalDate = "Mon Apr 22 2013 12:16:00 GMT+0530 (India Standard Time)" ; 
$newDate = date("Y-m-d H:i:s", strtotime($originalDate)); 

(請參閱PHP站點上的strtotimedate文檔)。

或使用DateTime:

<?php 
$source = "Mon Apr 22 2013 12:16:00 GMT+0530 (India Standard Time)"; 
$date = new DateTime($source); 
echo $date->format("Y-m-d H:i:s"); // 22 2013 12:16:00 
echo $date->format("Y-m-d H:i:s"); // 22 2013 12:16:00 
?> 

DEMO

+0

對不起它給我結果「1970-01-01 01:00 :00「但是我在$ startDate中傳遞的值是」Mon Apr 22 2013 13:00:00 GMT + 0530(India Standard Time)「 – 2013-04-27 19:50:23

+1

http://codepad.org/19BX3mQS – underscore 2013-04-27 19:52:00

+0

我演示了演示,但很抱歉地說它不是在我的工作..現在它給錯誤,如致命錯誤:未收集異常'異常'與消息'日期時間:: __構造()[< a href ='datetime .--構造'> datetime .--構造</a >]:無法解析時間字符串(Mon Apr 22 2013 12:00:00 GMT + 0530(印度標準時間))在位置41(S):雙倍時區規範' – 2013-04-27 20:02:28

2

嘗試使用strtotime的時間戳UNIX格式轉換,所以你可以在date()功能使用:

date("Y-m-d H:i:s",strtotime($startDate)); 

你也可以嘗試使用(通常包括)DateTime類。尤其要看DateTime::createFromFormat。它可以幫助您解決日期字符串中的歧義(strtotime()有時會失敗或錯誤解析日期字符串)。 DateTime::createFromFormat允許您專門指定日期字符串的格式,因此不會有歧義。

+0

對不起,它給我的結果「1970-01-01 01:00:00」但我傳遞價值$ startDate是「Mon Apr 22 2013 13:00:00 GMT + 0530(India Standard時間)「 – 2013-04-27 19:49:18

0

首先需要將其保存爲時間戳所以,

$startDate = strtotime($javascript_value);  
$result = date("Y-m-d H:i:s",$startDate); 
+0

它也給我」1970-01-01 01:00:00「我認爲所有提供的答案都是一樣的.. :( – 2013-04-27 19:52:48