ymd w3schools now current convert php date calendar strtotime

w3schools - Cómo obtener la fecha para las vacaciones usando php



date('' ymd strtotime php (4)

Por ejemplo el:

  1. 3er lunes de enero para el día de Martin Luther King
  2. 3er lunes de febrero para el Día de los Presidentes (cumpleaños de Washington)
  3. Último domingo de marzo por la Pascua.
  4. Último lunes de mayo para el Día de los Caídos

Estoy tratando de obtener estas fechas para poder marcarlas en mi calendario sin tener que poner todo manualmente en los próximos años.

RESPUESTA MODIFICADA !!

$curYir = date("Y");//current year $MLK = date(''Y-m-d'', strtotime("january $curYir third monday")); //marthin luthor king day $PD = date(''Y-m-d'', strtotime("february $curYir third monday")); //presidents day $Est = date(''Y-m-d'', easter_date($curYir))); // easter $MDay = date(''Y-m-d'', strtotime("may $curYir first monday")); // memorial day //("may $curYir last monday") will give you the last monday of may 1967 //much better to determine it by a loop $eMDay = explode("-",$MDay); $year = $eMDay[0]; $month = $eMDay[1]; $day = $eMDay[2]; while($day <= 31){ $day = $day + 7; } if($day > 31) $day = $day - 7; $MDay = $year.''-''.$month.''-''.$day; $LD = date(''Y-m-d'', strtotime("september $curYir first monday")); //labor day $CD = date(''Y-m-d'', strtotime("october $curYir third monday")); //columbus day $TH = date(''Y-m-d'', strtotime("november $curYir first thursday")); // thanks giving //("november $curYir last thursday") will give you the last thursday of november 1967 //much better to determine it by a loop $eTH = explode("-",$TH); $year = $eTH[0]; $month = $eTH[1]; $day = $eTH[2]; while($day <= 30){ $day = $day + 7; } if($day > 30) //watch out for the days in the month November only have 30 $day = $day - 7; $TH = $year.''-''.$month.''-''.$day;


De esta manera funcionó para mí.

function observed_date($holiday){ $day = date("w", strtotime($holiday)); if($day == 6) { $observed_date = $holiday -1; } elseif ($day == 0) { $observed_date = $holiday +1; } else { $observed_date = $holiday; } return $observed_date; } function get_holiday($holiday_name) { $currentYear = date(''Y''); switch ($holiday_name) { // New Years Day case "new_year": $holiday = observed_date(date(''Ymd'', strtotime("first day of january $currentYear"))); break; // Martin Luther King, Jr. Day case "mlk_day": $holiday = date(''Ymd'', strtotime("january $currentYear third monday")); break; // President''s Day case "presidents_day": $holiday = date(''Ymd'', strtotime("february $currentYear third monday")); break; // Memorial Day case "memorial_day": $holiday = (new DateTime("Last monday of May"))->format("Ymd"); break; // Independence Day case "independence_day": $holiday = observed_date(date(''Ymd'', strtotime("july 4 $currentYear"))); break; // Labor Day case "labor_day": $holiday = date(''Ymd'', strtotime("september $currentYear first monday")); break; // Columbus Day case "columbus_day": $holiday = date(''Ymd'', strtotime("october $currentYear second monday")); break; // Veteran''s Day case "veterans_day": $holiday = observed_date(date(''Ymd'', strtotime("november 11 $currentYear"))); break; // Thanksgiving Day case "thanksgiving_day": $holiday = date(''Ymd'', strtotime("november $currentYear fourth thursday")); break; // Christmas Day case "christmas_day": $holiday = observed_date(date(''Ymd'', strtotime("december 25 $currentYear"))); break; default: $holiday = ""; break; } return $holiday; }

Luego, puede imprimir las vacaciones llamando a la función echo get_holiday(''new_year'');

Y el resultado para 2015 debería ser 20150101


La función strtotime es útil aquí, pero parece tener algunas peculiaridades sobre cómo interpreta el lenguaje inglés. Asegúrese de revisar su redacción con cuidado y verifique sus resultados.

Por ejemplo, esto parece que debería funcionar, ¡pero volverá el último lunes de abril ($ currentYear = 2014)!

echo "Memorial Day " . date(''F d, Y'', strtotime("may $currentYear last monday")) . "<br />";

Sin embargo, esta fraseología devolverá las vacaciones correctas para 2014.

echo "Memorial Day " . date(''F d, Y'', strtotime("last monday of May $currentYear")) . "<br />";

Y esto le dará la fecha correcta para las vacaciones del próximo año.

echo "Memorial Day " . date(''F d, Y'', strtotime("last monday of May $currentYear+1")) . "<br />";

La página de documentos PHP tiene comentarios adicionales sobre su uso. Cuídate


Puede aprovechar esta función de php. strtotime

$currentYear = date("Y");

Día de MLK -

echo date(''Y-m-d'', strtotime("third monday of january $currentYear"));

Día del Presidente -

echo date(''Y-m-d'', strtotime("third monday/OD February $currentYear"));

Pascua

echo date(''Y-m-d'', strtotime("last sunday of march $currentYear"));

Día Conmemorativo -

echo date(''Y-m-d'', strtotime("last monday of may $currentYear"));


Solución para mudarse a días festivos en Alemania: devuelve una serie de cadenas formadas con ''Ymd'' que incluyen Viernes Santo, Lunes de Pascua, Ascensión y Lunes de Pentecostés. Se crea un nuevo objeto DateTime para Semana Santa para cada día para mejorar la legibilidad.

function beweglicheFeiertage( int $year ):array { //Karfreitag - good friday $return = array(); $easterDate = DateTime::createFromFormat(''U'', easter_date($year) ); $easterDate->modify(''- 1 days''); $return[] = $easterDate->format(''Y-m-d''); //Ostermontag easter monday $easterDate = DateTime::createFromFormat(''U'', easter_date($year) ); $easterDate->modify(''+ 2 day''); $return[] = $easterDate->format(''Y-m-d''); //Himmelfahrt ascencion $easterDate = DateTime::createFromFormat(''U'', easter_date($year) ); $easterDate->modify(''+ 40 days'');//go to Ascencionday $return[] = $easterDate->format(''Y-m-d''); //Pfingstmontag - pentecost monday $easterDate = DateTime::createFromFormat(''U'', easter_date($year) ); $easterDate->modify(''+ 51 days'');//go to Pentecost Monday $return[] = $easterDate->format(''Y-m-d''); return $return; }