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

Moderator: amosbatto

#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));
#789099
Este código calcula el número de días desde el comienzo del año actual:
Code: Select all
$hoy = strtotime(date("Y-m-d"));
$anoNuevo = strtotime(date("Y-01-01"));
$diasDiferencia = ($hoy - $anoNuevo) / (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

Per https://wiki.processmaker.com/3.2/Suggest_Cont[…]

Is there a way to set the calendar pick list for v[…]

I'm trying to capture the time and date a user tak[…]

how to skip this stages

I re-read the thread and I have moved any Before A[…]