¿Cómo Puedo Mostrar los Días Hábiles en PHP?

Escribo este artículo en respuesta a la pregunta que me hicieron de ¿Cómo puedo mostrar los días hábiles en PHP?

Debes Saber:

Para poder hacer este ejercicio debemos tener cierto conocimiento en las funciones de fecha, formato de fecha y arreglos. Los nombres de las funciones de php que estaremos trabajando son date() y date_format().  Asegúrate de que la función trabaje con tu versión de PHP.

Esta es la función de date() y los parámetros que acepta.

string date ( string $format [, int $timestamp = time() ] )

Es muy importante que estudies y utilices de referencia la tabla del formato que puedes utilizar para la fecha. Puedes entrar a página web de la documentación de PHP. No es necesario aprendértelos todos, pero debes conocer algunos que estarás utilizando la mayoría de las veces.

Y = 2015 (año completo)
y = 15 (últimos 2 dígitos del año)
m = 12 (número del mes)
d = 01 (número del día en 2 días)
h = 09 (hora en formato de 12 horas)
i = 30 (minutos con el cero al inicio)
s = 23 (segundos con el cero al inicio)

Aunque no lo mencioné anteriormente, utilicé otra función de php llamada “date_create()” que te permite convertir un “string” (cadena de caracteres) en el formato de fecha y así asignarle el formato que deseas utilizar.

$date = date_create('2015-12-13');
echo date_format($date, 'Y-m-d H:i:s');

La Búsqueda:

Es importante que entiendas siempre existe más de una forma de realizar las cosas, pero lo que buscamos es que podamos tener un código que sea re-utilizable, o sea, pasar el trabajo una vez. Sea que te sientes a programar el código tu mismo, o hagas una búsqueda en la internet, es tiempo que se te resta de la fecha final del proyecto.

Así que debemos volvernos expertos en decidir qué momentos, programar y qué momentos hacer la búsqueda en internet, ya que existen un sin número de ejemplos de pequeños pedazos de códigos que nos pueden servir para nuestro proyecto, pero debemos saber leer e interpretar el mismo.

El Código:

Este código lo tomé de https://eval.in/90006 y me pareció muy acertado para responder a la pregunta que me hicieron. Al ser una función nos permite aplicarlo de manera sencilla.

function number_of_working_dates($from, $days) {
    $workingDays = [1, 2, 3, 4, 5]; # date format = N (1 = Monday, ...)
    $holidayDays = ['*-12-25', '*-01-01', '2013-12-24', '2013-12-25']; # variable and fixed holidays

    $from = new DateTime($from);
    $dates = [];
    $dates[] = $from->format('Y-m-d');
    while ($days) {
        $from->modify('+1 day');

        if (!in_array($from->format('N'), $workingDays)) continue;
        if (in_array($from->format('Y-m-d'), $holidayDays)) continue;
        if (in_array($from->format('*-m-d'), $holidayDays)) continue;

        $dates[] = $from->format('Y-m-d');
        $days--;
    }
    return $dates;
}

print_r( number_of_working_dates('2015-12-23', 10) );

Le añadí algunas otras líneas para que pudieran ver cómo se puede utilizar un código base para desarrollar lo que deseamos.

$dates = number_of_working_dates('2015-12-23', 10); //Arreglo del resultado de las fechas

foreach ( $dates as $date ) {
    $fecha = date_create($date); //Convertir 'string' a formato de fecha
    echo($date . ' - ' . $fecha->format('D') . '
');  
    //Muestro los formatos que deseo (fecha y el día)
    
}

//Aquí puedo seleccionar el día deseado
$fecha = date_create($dates[0]);
//echo( ''.$dates[0] . ' - ' . date_format($fecha, 'D') . '');  //Método tradicional
echo( ''.$dates[0] . ' - ' . $fecha->format('D') . '');  //Orientado a objeto

Resultado final:

Este es el resultado final del código completo para que lo puedan utilizar.

function number_of_working_dates($from, $days) {
    $workingDays = [1, 2, 3, 4, 5]; # date format = N (1 = Monday, ...)
    $holidayDays = ['*-12-25', '*-01-01', '2013-12-24', '2013-12-25']; # variable and fixed holidays

    $from = new DateTime($from);
    $dates = [];
    $dates[] = $from->format('Y-m-d');
    while ($days) {
        $from->modify('+1 day');

        if (!in_array($from->format('N'), $workingDays)) continue;
        if (in_array($from->format('Y-m-d'), $holidayDays)) continue;
        if (in_array($from->format('*-m-d'), $holidayDays)) continue;

        $dates[] = $from->format('Y-m-d');
        $days--;
    }
    return $dates;
}

//print_r( number_of_working_dates('2015-12-23', 10) );
$dates = number_of_working_dates('2015-12-23', 10);

foreach ( $dates as $date ) {
    $fecha = date_create($date);
    echo($date . ' - ' .  $fecha->format('D') . '
'); 
    
}


$fecha = date_create($dates[0]);
//echo( ''.$dates[0] . ' - ' . date_format($fecha, 'D') . '');
echo( ''.$dates[0] . ' - ' . $fecha->format('D') . '');  //orientado a objetos

Lo Próximo:

Luego tomaré un tiempo para crear un video que muestre cómo se hace todo, ya que hay muchas personas que se les hace más fácil aprender cuando lo ven. Saludos y hasta la próxima.

Referencias:

Los Atributos de los Productos, Servicios y Marcas

Existen seis atributos de los productos, servicios, campañas de marketing y marcas que se pueden utilizar para entregar los beneficios prácticos y emocionales que los clientes quieren.

Estos son:

Atributos Funcionales. Estas son las características ‘racionales’ o ‘objetivas’ de productos y servicios. Incluyen características y funcionalidad, fiabilidad y durabilidad y facilidad de uso

Atributos Estéticos. Estos son unos apariencia de productos y servicios. Ejemplos incluyen. Incluyen colores, formas, diseños, texturas y sonidos.

Marketing. Esto es acerca de la forma en que un servicio de producto o marca se comercializa. Incluye mensajes clave, canales de comunicación, relaciones públicas y avales.

Punto de precio. Esto se refiere a la cantidad de un producto o los costos del servicio y donde se coloca una marca en comparación con sus competidores en términos de precio.

Comportamiento. Esto se refiere al comportamiento de la empresa y los empleados. Incluye cómo se trata a los clientes, el bienestar de los empleados y la responsabilidad social corporativa.

Vestido Marca. Estas son las marcas y símbolos de una marca. Ellos incluyen logotipos y fuentes, líneas de correa, lemas y colores.

Estos son unos puntos interesantes que ha expuesto Patrick W. Jordan quien ha desarrollado una serie de modelos que utiliza para la comprensión de los clientes, cómo satisfacer sus necesidades y garantizar que las empresas y organizaciones lo hacen con eficacia.

Puedes conocer más sobre estos modelos en su página personal: http://www.patrickwjordan.com

Generación Like • Documental

Generación Like es un excelente documental que nos muestra como los adolescentes de hoy en día son capaces de interactuar directamente con su cultura, artistas, celebridades, películas, marcas e incluso entre sí, en formas nunca antes posibles.

Pero, ¿será eso el verdadero empoderamiento? Este documental explora como los adolescentes van en búsqueda de identidad y conexión a través de los medios sociales y expone el juego que están jugando las corporaciones con estos jóvenes consumidores.

¿Sabrán estos adolescentes que están siendo utilizados? ¿Pensarán que están siendo utilizados? ¿Se preocuparán por esto? ¿O pensar que serán la próxima estrella hace que valga la pena?

Estas y otras interrogantes son expuestas en este documental.  ¡Te recomiendo a que lo veas!

http://www.pbs.org/wgbh/frontline/film/generation-like/