Comportamiento extraño de strtotime () cuando se usan fechas relativas ('esta semana')

He encontrado de alguna manera el comportamiento extraño de lastrtotime() Funciona cuando se trata de formatos de fecha relativa.

Vivo en un país, donde el primer día de la semana no es domingo sino lunes. Este hecho debería reflexionar sobrestrtotime()de salida.

El problema es que no importa qué configuración regional establezca (lo intentéen_US locale también),strtotime() simplemente extraño y ni el lunes ni el domingo parecen estar en el rango de esta semana. Vea el ejemplo a continuación.

Hoy, 02-02-2014 (o 02/02/2014, si lo desean ... qué buena fecha) es el domingo. En base a eso, traté de obtener las fechas del lunes y domingo de esta semana. Ambos estaban fuera.

<?php

    setlocale(LC_ALL, 'cs_CZ');

    $sunday = new DateTime('2014-02-02');

    echo '"Today" is Sunday, ' . $sunday->format('Y-m-d') . "\n";

    $thisWeekMonday = strtotime('monday this week', $sunday->getTimestamp());
    $thisWeekSunday = strtotime('sunday this week', $sunday->getTimestamp());
    echo "This week's Monday: " . date('Y-m-d', $thisWeekMonday) . "\n";
    echo "This week's Sunday: " . date('Y-m-d', $thisWeekSunday) . "\n";

?>

Código de salidas anteriores:

"Today" is Sunday, 2014-02-02
This week's Monday: 2014-02-03
This week's Sunday: 2014-02-09

Sistrtotime() pensó que una semana comienza con el domingo, debería haber regresado 2014-02-02 como 'esta semana domingo', pero no fue así. Eso significa, segúnstrtotime(), una semana comienza con el lunes. En ese caso, 'el lunes de esta semana' debería regresar 2014-01-27, pero no lo es.

Este comportamiento es ilógico. ¿Es este un error de PHP? ¿Estoy haciendo algo mal? En caso de que se trate de un error, ¿cuál sería la mejor manera de solucionar este problema?

Respuestas a la pregunta(1)

Su respuesta a la pregunta