PHP高级strtotime转换

Sun*_*ara 1 php date

我有日期和时间,如:

12-Oct-13 09:15 PM AEST
10-Oct-13 07:05 PM AEST
Run Code Online (Sandbox Code Playgroud)

我使用PHP的strtotime()函数像这样将它转换为datetime对象,如下所示:

echo $datetime=strtotime('12-Oct-13 09:15 PM AEST');
Run Code Online (Sandbox Code Playgroud)

但它得到了空洞的结果.我的想法是将上述日期时间转换为另一种格式,如:

12-10-2013 09:15 PM
10-10-2013 07:05 PM
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮助我正确转换为日期时间对象.然后我在我的代码中使用它.

Gla*_*vić 5

PHP不支持AEST时区,这就是strtotime()返回的原因false.查看支持的TZ列表.

您仍然可以将输入转换为所需的输出:

$input = '12-Oct-13 09:15 PM AEST';
$dt = DateTime::createFromFormat('d-M-y H:i A *', $input);
echo $dt->format('d-m-Y h:i A'); # 12-10-2013 09:15 PM
Run Code Online (Sandbox Code Playgroud)

或者,由于AEST时区+10:00偏离UTC,只需将字符串替换为:

$input = '12-Oct-13 09:15 PM AEST';
$input = str_replace(' AEST', ' +1000', $input);
$dt = new DateTime($input);
print_r($dt);
/*
DateTime Object
(
    [date] => 2013-10-12 21:15:00
    [timezone_type] => 1
    [timezone] => +10:00
)
*/
Run Code Online (Sandbox Code Playgroud)

或者,从字符串中剪切时区部分:

$input = '12-Oct-13 09:15 PM AEST';
$input = substr($input, 0, strrpos($input, ' '));

echo date_create($input)->format('d-m-Y h:i A'); # 12-10-2013 09:15 PM
# or
echo date('d-m-Y h:i A', strtotime($input)); # 12-10-2013 09:15 PM
Run Code Online (Sandbox Code Playgroud)