variable una semana obtener mes fechas fecha espaƱol date_format actual php date datetime

una - Obtenga la fecha para el lunes y el viernes para la semana actual(PHP)



string to date php (8)

¿Cómo puedo obtener la fecha de lunes y viernes para la semana actual?

Tengo el siguiente código, pero falla si el día actual es domingo o sábado.

$current_day = date("N"); $days_to_friday = 5 - $current_day; $days_from_monday = $current_day - 1; $monday = date("Y-m-d", strtotime("- {$days_from_monday} Days")); $friday = date("Y-m-d", strtotime("+ {$days_to_friday} Days"));


Como sugiere la respuesta principal, usar la función strtotime() PHP es la forma más fácil.

Sin embargo, en lugar de usar las declaraciones if como él sugiere, simplemente puede volver al domingo anterior y obtener las fechas que necesite desde allí.

$monday = strtotime(''next monday'', strtotime(''previous sunday'')); $friday = strtotime(''next friday'', strtotime(''previous sunday''));


Esta pregunta necesita una respuesta DateTime: -

/** * @param String $day * @return DateTime */ function getDay($day) { $days = [''Monday'' => 1, ''Tuesday'' => 2, ''Wednesday'' => 3, ''Thursday'' => 4, ''Friday'' => 5, ''Saturday'' => 6, ''Sunday'' => 7]; $today = new /DateTime(); $today->setISODate((int)$today->format(''o''), (int)$today->format(''W''), $days[ucfirst($day)]); return $today; }

Uso:

var_dump(getDay(''Monday'')->format(''l dS F Y'')); var_dump(getDay(''Friday'')->format(''l dS F Y''));

Salida:

string ''Monday 30th September 2013'' (length=26) string ''Friday 04th October 2013'' (length=24)

Verlo funcionando


Estaba buscando algo similar, excepto que quería cualquier lunes, no solo esta semana. Esto es lo que se me ocurrió:

function getSunday(DateTime $date){ $outdate = clone($date); $day = $date->format("w"); // get the weekday (sunday is 0) $outdate->sub(new DateInterval("P".$day."D")); // subtracting the weekday from the date always gives Sunday return $outdate; }

Acepta una fecha arbitraria y da el domingo. Luego, puede agregar fácilmente los días de vuelta para obtener de lunes a sábado.


Estas entradas de strtotime funcionan muy bien:

strtotime( "next monday" ); strtotime( "previous monday" ); strtotime( "today" ); strtotime( "next friday" ); strtotime( "previous friday" );

Todo lo que necesitas hacer es envolver la lógica dentro de algunas declaraciones if.


Esto realmente depende de cómo defina una semana, pero se me ocurrió esta función que le dará la fecha para el "lunes" o "viernes" más cercano (o cualquier otro día):

function closestDate($day){ $day = ucfirst($day); if(date(''l'', time()) == $day) return date("Y-m-d", time()); else if(abs(time()-strtotime(''next ''.$day)) < abs(time()-strtotime(''last ''.$day))) return date("Y-m-d", strtotime(''next ''.$day)); else return date("Y-m-d", strtotime(''last ''.$day)); }

Entrada: un día de la semana ("domingo", "lunes", etc.)

Salida: si pedí el "domingo" más cercano y hoy es:

  1. "Domingo": obtendré la fecha de hoy
  2. "Lunes": obtendré la fecha de ayer
  3. "Sábado: obtendré la fecha de mañana

Espero que esto ayude :)


La mejor solución sería:

$monday = date( ''Y-m-d'', strtotime( ''monday this week'' ) ); $friday = date( ''Y-m-d'', strtotime( ''friday this week'' ) );


Necesitaba una definición de la semana actual según ISO 8601. Quiero que el lunes se defina siempre como el lunes que comenzó esta semana actual.

La siguiente solución funciona excelente para mí:

$monday = strtotime(date(''o-/WW'')); $friday = strtotime("next friday",$monday);

Para $monday , este método siempre devolverá el lunes que comenzó esta semana calendario. desafortunadamente, este método se basa en PHP 5.1 para analizar el formato de fecha.

Para obtener cualquier día de la semana, puedes intentar:

function time_for_week_day($day_name, $ref_time=null){ $monday = strtotime(date(''o-/WW'',$ref_time)); if(substr(strtoupper($day_name),0,3) === "MON") return $monday; else return strtotime("next $day_name",$monday); }

Uso:

time_for_week_day(''wednesday''); time_for_week_day(''friday'',strtotime(''2014-12-25''));


yo suelo :

$first_week_date = date(''d F Y'', strtotime(''next Monday -1 week'', strtotime(''this sunday''))); $last_week_date = date(''d F Y'', strtotime(''next Monday -1 week + 4 days'', strtotime(''this sunday'')));