Благодаря @iyepes, я решил полностью обойти локаль, если у вас есть сайт на нескольких языках,% P или% p оба бесполезны в локалях, отличных от английских, я полагаю, по крайней мере, так обстоит дело с испанским
Отделите% P или% p от языкового стандарта. Если у вас есть цикл while, установите для языкового стандарта значение en_US, извлеките время в en_US strftime, включая% P, а затем установите обратно в языковой стандарт, определенный пользователем.
$day1 = strtotime($row["day1"]);
$day2 = strtotime($row["day2"]);
$day3 = strtotime($row["day3"]);
setlocale(LC_ALL, "en_US");
$time1 = strftime("%l:%M %P", $day1);
$time2 = strftime("%l:%M %P", $day2);
$time3 = strftime("%l:%M %P", $day3);
setlocale(LC_ALL, $defined_locale);
$day1 - strftime("%d de %B, %Y, " $day1).$time1;
$day2 - strftime("%d de %B, %Y, " $day2).$time2;
etc...