2013-06-12 41 views
2

我正在使用以下代碼將用戶輸入轉換爲mysql時間戳。DateTime :: CreateFromFormat for PHP 5.2.14

$datetime = DateTime::createFromFormat('m/d/Y g:i a', "{$exp}"); 
$timestamp = $datetime->format('Y-m-d H:i:s'); 

其中$exp就等於這樣的:2013年6月12日下午6時41

這工作得很好這是運行PHP 5.4.3我的本地服務器上,但是當我上傳相同的腳本到我的託管服務器,它不想運行這部分可能是因爲PHP版本的差異。

我該如何解決這個問題或替代方案?謝謝!

+1

什麼PHP是您的託管服務器運行? – zeantsoi

+0

PHP版本5.2.14 – Kody

回答

3

你可以擴展DateTime類並實現createFromFormat()自己喜歡這個: -

class MyDateTime extends DateTime 
{ 
    public static function createFromFormat($format, $time, $timezone = null) 
    { 
     if(!$timezone) $timezone = new DateTimeZone(date_default_timezone_get()); 
     $version = explode('.', phpversion()); 
     if(((int)$version[0] >= 5 && (int)$version[1] >= 2 && (int)$version[2] > 17)){ 
      return parent::createFromFormat($format, $time, $timezone); 
     } 
     return new DateTime(date($format, strtotime($time)), $timezone); 
    } 
} 

$dateTime = MyDateTime::createFromFormat('Y-m-d', '2013-6-13'); 
var_dump($dateTime); 
var_dump($dateTime->format('Y-m-d')); 

這將適用於所有版本的PHP> = 5.2.0。

請參閱這裏的演示http://3v4l.org/djucq

0

爲了從一個特定的日期戳...:

$time = "06/12/2013 6:41 pm"; 
$format = "%m/%d/%Y %l:%M %P"; 
$ts = strptime($time, $format); 
$ts = mktime($ts['tm_hour'], $ts['tm_min'], $ts['tm_sec'], $ts['tm_mon'], $ts['tm_mday'], ($ts['tm_year'] + 1900)); 

後,你可以使用像你想:

$mysql_timestamp = date("Y-m-d H:i:s", $ts); 
+0

我得到了:致命錯誤:調用未定義的函數strptime() – Kody

+0

strptime只能在Linux操作系統 – Thompson

+1

下運行錯誤,它沒有在Windows操作系統下實現,甚至在OS X中也能正常工作。 –

相關問題