una - ¿cómo obtener la fecha de la semana pasada(martes o cualquier otro día) en php?
obtener fechas de una semana php (7)
Sé que ya hay una respuesta aceptada, pero no cumple con el segundo requisito que se solicitó. En el caso anterior, strtotime arrojaría ayer si se usa un miércoles. Por lo tanto, para ser exactos aún necesitaría verificar esto:
$tuesday = strtotime(''last Tuesday'');
// check if we need to go back in time one more week
$tuesday = date(''W'', $tuesday)==date(''W'') ? $tuesday-7*86400 : $tuesday;
Como señaló Davil en su comentario, esta fue una especie de instantánea mía. El cálculo anterior se cancelará una vez al año debido al horario de verano. La solución lo suficientemente buena sería:
$tuesday = date(''W'', $tuesday)==date(''W'') ? $tuesday-7*86400+7200 : $tuesday;
Si necesita que el tiempo sea 0: 00h, necesitará un esfuerzo extra por supuesto.
Creo que es posible, pero no puedo encontrar el algoritmo correcto para ello.
Lo que quería hacer era:
Si hoy es lunes 2 de febrero de 2009, ¿cómo sabría la fecha del martes de la semana pasada? Usando el mismo código 2 días después, encontraría la misma fecha del martes de la semana pasada con la fecha actual el miércoles, 4 de febrero de 2009.
Solución de trabajo:
$z = date("Y-m-d", strtotime("last Saturday"));
$z = (date(''W'', strtotime($z)) == date(''W'')) ? (strtotime($z)-7*86400+7200) : strtotime($z);
print date("Y-m-d", $z);
olvidó strtotime para el segundo argumento de la fecha (''W'', $ martes) hmm.
convertir $ martes a marca de hora antes de "$ martes-7 * 86400 + 7200"
mde.
// test: find last date for each day of the week
foreach (array(''Mon'', ''Tue'', ''Wed'', ''Thu'', ''Fri'', ''Sat'', ''Sun'') as $day) {
print $day . " => " . date(''m/d/Y'', last_dayofweek($day)) . "/n";
}
function last_dayofweek($day)
{
// return timestamp of last Monday...Friday
// will return today if today is the requested weekday
$day = strtolower(substr($day, 0, 3));
if (strtolower(date(''D'')) == $day)
return strtotime("today");
else
return strtotime("last {$day}");
}
PHP realmente hace esto realmente fácil:
echo strtotime(''last Tuesday'');
Ver la documentación de tiempo de strtotime
.
<?php
$currentDay = date(''D'');
echo "Today-".$today = date("Y-m-d");
echo "Yesterday-".$yesterday = date("Y-m-d",strtotime(''yesterday''));
echo "Same day last week-".$same_day_last_week = date("Y-m-d",strtotime(''last ''.$currentDay));
?>
La mayoría de estas respuestas son demasiado o técnicamente incorrectas porque "martes pasado" no necesariamente significa el martes de la semana pasada, solo significa el martes anterior, que podría ser en la misma semana de "ahora".
La respuesta correcta es:
strtotime(''tuesday last week'')