Un foro de discusión para nuestra comunidad de hispano hablante

Moderators: ArturoRobles, ArturoRobles

#789089
Para conseguir el numero de dias entre dos fechas, tienes que convertirlas a timestamps y subtraerlas. Timestamps estan en segundos, entonces hay que dividir por 24*60*60 para conseguir el numero de dias.
Code: Select all
if (isset(@@fecha1) and !empty(@@fecha1) and isset(@@fecha2) and !empty(@@fecha2)) {
   $fecha1 = strtotime(@@fecha1);
   $fecha2 = strtotime(@@fecha2);
   $dias = ($fecha2 - $fecha1) / (24*60*60);
   
   $sql = "INSERT INTO PMT_MITABLA (CAMPOX, CAMPOY, CAMPO_DIAS) VALUES ('A', 'B', $dias)";
   executeQuery($sql);
}
Si quieres rondear el numero de dias al un intero, puedes usar round():
Code: Select all
   $dias = round($dias);

Si quieres calcular el numero de dias sin incluir la hora en el calculo, puedes quitar la hora de los datetimes con substr().
Code: Select all
if (isset(@@fecha1) and !empty(@@fecha1) and isset(@@fecha2) and !empty(@@fecha2)) {
   $fecha1 = strtotime( substr(@@fecha1, 0, 10) );
   $fecha2 = strtotime( substr(@@fecha2, 0, 10) );
   $dias = (int) (($fecha2 - $fecha1) / (24*60*60));
#812916
Buenos días,

Tengo una pregunta: Yo quisiera restar fechas también pero sin contar sabado y domingos, tenia este codigo pero no me funciona :(
Code: Select all
//Resta entre fechas sin contar sab y dom
  function cuentaFindes(){
    var inicio = new Date(datDisVac); //Fecha inicial
    var fin = new Date(datHasta); //Fecha final
    var timeDiff = Math.abs(fin.getTime() - inicio.getTime());
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); //Días entre las dos fechas
    var cuentaFinde = 0; //Número de Sábados y Domingos
    var array = new Array(diffDays);

    for (var i=0; i < diffDays; i++) 
    {
        //0 => Domingo - 6 => Sábado
        if (inicio.getDay() == 1 || inicio.getDay() == 5) {
            cuentaFinde++;
        }
        inicio.setDate(inicio.getDate() + 1);
    }

   return cuentaFinde;
}
Lo estaba usando en la opción FORMULA en el formulario para que el resultado se muestre en un campo.

Si me pudieras ayudar sería genial.

Muchísimas gracias.
#812937
Creo que tu codigo de JavaScript debe funcionar. Si sabes como usarlo en tu DynaForm, debes publicar el archivo .json de tu Dynaform.

En PHP es más facil:
Code: Select all
function number_of_working_days($startDate, $endDate) {
    $workingDays = 0;
    $startTimestamp = strtotime($startDate);
    $endTimestamp = strtotime($endDate);
    for ($i = $startTimestamp; $i <= $endTimestamp; $i = $i + (60 * 60 * 24)) {
        if (date("N", $i) <= 5) $workingDays = $workingDays + 1;
    }
    return $workingDays;
}
Ver: https://stackoverflow.com/questions/450 ... tes-in-php
#828107
I am using this trigger and I placed it after dynaform but I do not get the count of days
if (isset(@@fecha_solicitud) and !empty(@@fecha_solicitud) and isset(@@fecha_observacion) and !empty(@@fecha_observacion)) {
$fecha1 = strtotime(@@fecha_solicitud);
$fecha2 = strtotime(@@fecha_observacion);
$dias = ($fecha2 - $fecha1) / (24*60*60);


$sql = "INSERT INTO PMT_VENTANILLA_UNICA (ConteoDias1) VALUES ($dias)";
executeQuery($sql);
};


Image

Image

The 500 Internal Server Error is the general catch[…]

Really very nice blog information for this one and[…]

This is a long, lengthy and cumbersome process. T[…]

Great read for when on the road. The book provides[…]