无法更改php中的日期格式

时间:2015-01-31 05:22:45

标签: php datetime

我试图将日期“31/01/2015 11:33:22 AM”更改为PHP中的“2015-01-31 11:33:22”

我试过了

echo strtotime('31/01/2015 11:33:22 AM');

但它的抛出错误..任何想法。请分享

错误消息

  

警告:strtotime()[function.strtotime]:依赖系统的时区设置是不安全的。您必需使用date.timezone设置或date_default_timezone_set()函数。如果您使用了这些方法中的任何一种并且仍然收到此警告,则很可能拼错了时区标识符。我们选择'America / New_York'作为'EST / -5.0 / no DST'而不是第2行

3 个答案:

答案 0 :(得分:2)

首先,您应该设置您的时区,就像已经告诉您的警告:

date_default_timezone_set('America/Los_Angeles');

然后,您应该查看Localized Notations下的the manual,您将看到,php将31/01/2015解析为American month, day and year(格式为m/d/Y },而不是d/m/Y正如你所假设的那样)。请参阅demo

您的日期格式是自定义的,您应该将其视为一个。将格式转换为/.,因此输出日期为31.01.2015,php将理解为d.m.Y格式。请参阅demo

恕我直言,打赌案例将是使用DateTime::createFromFormat(),告诉方法你期望什么作为输入,如下:

$date = DateTime::createFromFormat('d/m/Y g:i:s A', $input);
echo $date->format('Y-m-d H:i:s');

demo

答案 1 :(得分:0)

在你的strtotime功能之前加上它:

date_default_timezone_set('America/New_York')

以下是来自PHP.net的示例:

<?php
    date_default_timezone_set('America/Los_Angeles');

    $script_tz = date_default_timezone_get();

    if (strcmp($script_tz, ini_get('date.timezone'))){
        echo 'Script timezone differs from ini-set timezone.';
    } else {
        echo 'Script timezone and ini-set timezone match.';
    }
?>

答案 2 :(得分:0)

试试这个

$dt = "02/09/2015 11:33:22 AM";
$expDate = explode('/',$dt);
$newdate = $expDate[1]."/".$expDate[0]."/".$expDate[2];
$test = new DateTime($newdate);
echo date_format($test, 'Y-m-d H:i:s');