2

次のコードを使用して、ユーザー入力を mysql タイムスタンプに変換しています。

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

2013 年 6 月 12 日6:41$exp午後

これは、PHP 5.4.3 を実行しているローカル サーバーでは正常に動作しますが、同じスクリプトをホスティング サーバーにアップロードすると、おそらく PHP のバージョンが異なるため、この部分を実行したくありません。

これまたはそれに代わるものを修正するにはどうすればよいですか?ありがとう!

4

2 に答える 2

4

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

于 2013-06-13T10:33:45.377 に答える