日期格式不提供有效的日期,即使它匹配文档


php date formating help Date format does not give valid date even though it matches documentation

阅读并重新阅读文档,确实无法解释为什么$date1通过坏

有人能帮忙吗?非常感谢

$date1 = "04-16-2013";
$date2 = "2013-04-16";
printf("date1 = %s'n", $date1);
printf("date2 = %s'n", $date2);
$newdate1 = date('m-d-Y',$date1);
$newdate2 = date('Y-m-d',$date2);
printf("newdate1 = %s'n", $newdate1);
printf("newdate2 = %s'n", $newdate2);
$previous_date = date('m-d-Y', strtotime($date1 .' -1 day'));
$previous_date2 = date('m-d-Y', strtotime($date2 .' -1 day'));
printf("previous_date = %s'n", $previous_date);
printf("previous_date2 = %s'n", $previous_date2);

输出
 date1 = 04-16-2013
    date2 = 2013-04-16
    newdate1 = 12-31-1969
    newdate2 = 1969-12-31
    previous_date = 12-31-1969
    previous_date2 = 04-15-2013

strtotime function

m/d/y或d-m-y格式的日期通过查看来消除歧义各个组件之间的分隔符:如果分隔符是a斜杠(/),则采用美式的m/d/y;然而,如果分隔符是一个破折号(-)或点(.),然后是欧洲的d-m-y格式假定.

为了避免潜在的歧义,最好使用ISO 8601 (YYYY-MM-DD)日期或DateTime::createFromFormat()如果可能的话。

在您的情况下,因为您使用分隔符(-)php考虑日期格式为d-m-y。

或者变通方法:

$date1 = "04-16-2013";
$date2 = "2013-04-16";
printf("date1 = %s'n", $date1);
printf("date2 = %s'n", $date2);

$newdate1 = date('m-d-Y',strtotime(str_replace("-","/",$date1)));
$newdate2 = date('Y-m-d', strtotime($date2));
printf("newdate1 = %s'n", $newdate1);
printf("newdate2 = %s'n", $newdate2);

$previous_date = date('m-d-Y', strtotime(str_replace("-","/",$date1) .' -1 day'));
$previous_date2 = date('m-d-Y', strtotime($date2 .' -1 day'));
printf("previous_date = %s'n", $previous_date);
printf("previous_date2 = %s'n", $previous_date2);

在您的情况下试试:

$date1 = "04-16-2013";
$date = date_create_from_format('m-j-Y', $date1);
echo date_format($date, 'd-m-Y');

首先输入月-日-年....然后输出日-月-年