用于PHP 5.2.14的DateTime :: CreateFromFormat

时间:2013-06-12 22:43:53

标签: php mysql datetime timestamp

我使用以下代码将用户输入转换为mysql时间戳。

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

其中$exp等于:06/12/2013 6:41 pm

这在运行PHP 5.4.3的本地服务器上工作正常,但是当我将相同的脚本上传到我的托管服务器时,它不希望运行这部分可能是因为PHP版本的差异。

我将如何解决此问题或替代问题?谢谢!

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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);