1

我的日期和时间如下:

12-Oct-13 09:15 PM AEST
10-Oct-13 07:05 PM AEST

我使用 PHP 的 strtotime() 函数像这样将其转换为日期时间对象,如下所示:

echo $datetime=strtotime('12-Oct-13 09:15 PM AEST');

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

12-10-2013 09:15 PM
10-10-2013 07:05 PM

谁能帮我正确转换为日期时间对象。然后我在我的代码中使用它。

4

1 回答 1

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

或者,由于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
)
*/

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

$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
于 2013-10-12T12:37:44.277 回答